我有一个工作的应用程序,我正在努力将其转换为Xcode 4.2中的ARC.其中一个预检警告涉及self强烈捕获导致保留周期的块.我已经制作了一个简单的代码示例来说明问题.我相信我理解这意味着什么,但我不确定实现这种情况的"正确"或推荐方法.
代码示例:
// code sample
self.delegate = aDelegate;
self.dataProcessor = [[MyDataProcessor alloc] init];
self.dataProcessor.progress = ^(CGFloat percentComplete) {
[self.delegate myAPI:self isProcessingWithProgress:percentComplete];
};
self.dataProcessor.completion = ^{
[self.delegate myAPIDidFinish:self];
self.dataProcessor = nil;
};
// start the processor - processing happens asynchronously and the processor is released in the completion block
[self.dataProcessor startProcessing];
Run Code Online (Sandbox Code Playgroud)
问题:我在做什么"错误"和/或如何修改它以符合ARC惯例?
有没有办法找出iOS中可用的内存量?我知道当可用内存不足时,系统会传递低内存警告.但是,我的应用程序有一些点,单个线程将执行复杂的任务,有时该任务耗尽足够的内存,它只是由操作系统终止(我的应用程序可以从互联网上下载图片,我将它们缩小到一个小大小...如果用户下载一个非常大的图像,我的应用程序内存不足,只是'poof').
让应用程序自发终止显然是一种糟糕的用户体验.
当我即将耗尽内存并停止任务时,有什么方法可以找到?
我想我可以将任务放在一个单独的线程上,也许系统会向主线程发送一个低内存警告,但这似乎很复杂,甚至不能保证工作.
谢谢!罗恩