我有一个我创建的对象订阅了一些NSNotificationCenter通知,但它正在发布,因为我没有指向实例化的指针。实例化有一个委托,它将一个方法调用回我的另一个类,所以我觉得没有必要指向它,因为指针不起任何作用。
基本上,我有一个类的实例化,DelegateListener(名称仅用于示例目的),它订阅了一些默认的NSNotificationCeneter
的通知。实例化结束后,不会将此实例化分配给任何指针。但是,实例化具有属性委托。我在实例化期间为该委托分配了一个值。该委托实现了我希望DelegateListener在其订阅的通知触发时调用的方法。
这个问题是我创建的DelegateListener的实例化被释放,除非我将它分配给保留的指针。有没有办法避免在ARC中自动释放我的DelegateListener实例?
答案 0 :(得分:3)
如果您没有多个实例,则应将DelegateListener
实例存储在静态变量中。
我觉得没有必要指向它,因为指针不起任何作用。
指针(或至少应该)有用的目的:当您不再需要收听通知时,您应该取消订阅DelegateListener
接收它们。至少,这应该在您的应用程序进入后台时发生(除非它的目的是执行后台处理),以及应用程序何时终止。
[[NSNotificationCenter defaultCenter] removeObserver:delegateListener];