1

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

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

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

4

1 回答 1

3

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

我觉得没有必要也有一个指向它的指针,因为指针没有任何用途。

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

[[NSNotificationCenter defaultCenter] removeObserver:delegateListener];
于 2012-09-12T03:36:16.033 回答