Arc在代理调用回我的对象之前删除了它



我是iOS编程的新手,最近在内存管理方面学到了宝贵的一课。我解决了我的问题,但我不确定这是否是正确的方法

UserFetcher *userFetcher = [[UserFetcher alloc] init];
[userFetcher setDelegate: self];
[userFetcher fetchData];

在这段代码中,userFetcher使用RestKit对外部服务器进行REST调用,即userFetcher包装RestKit。当Restkit将值返回给userFetcher时,会抛出一个错误,因为userFetche已被销毁。发生这种情况是因为创建UserFetcher的父方法(上面的代码)完成了执行,我认为ARC取消了它的位置

我通过创建类型为(强,非原子)的私有属性UserFetcher来解决这个问题。我想知道这是否是解决问题的最佳方法?或者我的设计可以改进吗。

您正确地解决了它。您需要对该对象进行强引用。当你确定完成后,"userFetcher=nil;"将释放它。

最新更新