0
我想在本地使用的函數中創建一些無符號整數的二維數組。但是,該應用在移至背景時會崩潰。我嘗試了之後,下面的代碼:內存分配在ios應用程序中的背景失敗
對於後臺任務:
- (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;
}
}
}
上面的測試代碼片段會導致應用程序崩潰。但是,如果我嘗試分配只有768 * 4字節而不是768 * 1024 * 4,它工作正常。
由於內存膨脹或其他原因,操作系統是否暫停應用程序?另外,有沒有解決這個問題的方法?
謝謝。 P:我已經使用IOSurfaces(私有iOS API的一部分),在後臺創建並釋放它們,我從未遇到過這個問題。
似乎合乎邏輯。謝謝。 – 2013-02-15 06:51:08