我有一个对象,该对象响应通知列表(A,B,C ...)。每个响应以向其他侦听器发布新的通知(X)结尾。我想包括旧的/原始的通知-我的意思是整个NSNotification实例-作为新通知(X)的userInfo字典中的值。这样安全吗?
(我的直觉是,不是这样,但如果字典的内容处理不当,除了一些循环引用,我看不到任何其他特殊问题。]
将NSNotification
实例作为value包含在另一个的userInfo字典中是安全的。 NSNotification
本身确实没有任何魔术。这是一个非常简单/瘦的模型类,表示一个通知*。如您所述,您将希望避免保留周期,例如同时在彼此的用户信息词典中包含两个通知。即使这样,最糟糕的情况是(仅两个通知就很小)内存泄漏。
*从技术上讲NSNotification
是一个抽象类集群,当您直接实例化NSNotification
时,您实际上得到了私有NSConcreteNotification
的实例(从macOS 10.15.1开始),但这并不影响答案。您的问题。