【发布时间】:2013-02-15 05:25:46
【问题描述】:
我正在尝试在本地使用的函数中创建一些无符号整数的二维数组。但是,应用程序在移至后台时会崩溃。之后我尝试了以下代码:
对于后台任务:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]){
if([[UIDevice currentDevice] isMultitaskingSupported]){
__block UIBackgroundTaskIdentifier bgTask;
UIApplication *application = [UIApplication sharedApplication];
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//[self captureImage];
[self memCheck];
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
}
}
功能:
-(void) memCheck{
size_t XY[768][1024];
for(int i=0;i<768; ++i){
for(int j=0;j<1024;++j){
XY[i][j]=1;
}
}
}
上面的测试代码sn-p导致app崩溃。但是,如果我尝试只分配 768*4 字节而不是 768*1024*4,它可以正常工作。
操作系统是否由于内存膨胀或任何其他原因暂停了应用程序?另外,有没有解决方法?
谢谢。
P.S:我使用过 IOSurfaces(私有 iOS API 的一部分),在后台创建和发布它们,我从未遇到过这个问题。
【问题讨论】:
标签: ios objective-c ipad memory-management