我有这段代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[[[PPFormEngine alloc] init] downloadAndCacheFormDataIfNeeded];
return YES;
}
我正在使用ARC。
任何人都知道系统如何处理PPFormEngine对象? 在我们从该方法返回后再自动释放后,该对象是否会存在几秒钟?
答案 0 :(得分:3)
假设downloadAndCacheFormDataIfNeeded
是异步的 - 立即返回并启动后台任务以进行下载 - 那么PPFormEngine
实例的生命周期完全是该类的实现细节。< / p>
如果它在下载过程中对自己有强烈的引用,它会坚持下去。如果没有,它将被迅速解除分配;或者在downloadAndCacheFormDataIfNeeded
之后立即或者如果它恰好落入自动释放池中。
无论如何,最安全的实现将在下载完成时设置为nil的实例变量中保留强引用。希望PPFormEngine
有某种回调,所以你知道什么时候会把参考文献弄清楚。
答案 1 :(得分:2)
ARC应该添加对release
的调用,以便在到达return YES
的调用之前取消分配对象。所以不,它在方法返回后不会再存在几秒钟。在方法返回后,它不会存在任何秒数。
现在,如上所述,我不知道downloadAndCacheFormDataIfNeeded
方法的实现。如果其实施保留self
,直到下载和缓存完成,那么就不会有问题。