是否可以安全地将通知(NSNotification)作为另一个通知的userInfo传递?

问题描述 投票:1回答:1

我有一个对象,该对象响应通知列表(A,B,C ...)。每个响应以向其​​他侦听器发布新的通知(X)结尾。我想包括旧的/原始的通知-我的意思是整个NSNotification实例-作为新通知(X)的userInfo字典中的值。这样安全吗?

(我的直觉是,不是这样,但如果字典的内容处理不当,除了一些循环引用,我看不到任何其他特殊问题。]

objective-c foundation nsnotifications
1个回答
0
投票

NSNotification实例作为value包含在另一个的userInfo字典中是安全的。 NSNotification本身确实没有任何魔术。这是一个非常简单/瘦的模型类,表示一个通知*。如您所述,您将希望避免保留周期,例如同时在彼此的用户信息词典中包含两个通知。即使这样,最糟糕的情况是(仅两个通知就很小)内存泄漏。

*从技术上讲NSNotification是一个抽象类集群,当您直接实例化NSNotification时,您实际上得到了私有NSConcreteNotification的实例(从macOS 10.15.1开始),但这并不影响答案。您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.