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

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

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

最佳答案

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

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

指针确实(或至少应该)达到了一个目的:当您不再需要收听通知时,应取消订阅DelegateListener以免收到它们。至少,当您的应用程序进入后台时(除非要执行后台处理),并且当您的应用程序终止时,才应该发生这种情况。

[[NSNotificationCenter defaultCenter] removeObserver:delegateListener];

关于objective-c - iOS:发布使用中的对象(ARC),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12380763/

10-12 01:32