iOS:释放正在使用的对象(ARC)

时间:2012-09-12 03:20:29

标签: objective-c ios delegates automatic-ref-counting autorelease

我有一个我创建的对象订阅了一些NSNotificationCenter通知,但它正在发布,因为我没有指向实例化的指针。实例化有一个委托,它将一个方法调用回我的另一个类,所以我觉得没有必要指向它,因为指针不起任何作用。

基本上,我有一个类的实例化,DelegateListener(名称仅用于示例目的),它订阅了一些默认的NSNotificationCeneter的通知。实例化结束后,不会将此实例化分配给任何指针。但是,实例化具有属性委托。我在实例化期间为该委托分配了一个值。该委托实现了我希望DelegateListener在其订阅的通知触发时调用的方法。

这个问题是我创建的DelegateListener的实例化被释放,除非我将它分配给保留的指针。有没有办法避免在ARC中自动释放我的DelegateListener实例?

1 个答案:

答案 0 :(得分:3)

如果您没有多个实例,则应将DelegateListener实例存储在静态变量中。

  

我觉得没有必要指向它,因为指针不起任何作用。

指针(或至少应该)有用的目的:当您不再需要收听通知时,您应该取消订阅DelegateListener接收它们。至少,这应该在您的应用程序进入后台时发生(除非它的目的是执行后台处理),以及应用程序何时终止。

[[NSNotificationCenter defaultCenter] removeObserver:delegateListener];