有人可以在notificationSender
的{{1}}函数中澄清addObserver
的目的吗?
以下是Apple文档的解释:
NSNotification
我们使用通知在视频结束时进行回复。代码:
notificationSender
The object whose notifications the observer wants to receive; that is, only notifications sent by this sender are delivered to the observer.
If you pass nil, the notification center doesn’t use a notification’s sender to decide whether to deliver it to the observer.
其中NSNotificationCenter.defaultCenter().removeObserver(self, name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
包含相关视频。但是,为playerItem
传递nil
似乎没有明显效果。
我们使用object
代替nil
会更好,因为我们不需要创建另一个类变量。
使用playerItem
的风险是什么,以及使用nil
的优势是什么?
答案 0 :(得分:0)
与notificationSender
具体相关的唯一原因是,如果您选择了通知名称,则其他对象(您不想收听)将发送给您。指定notificationSender
类似于委托关系,将其保留为nil意味着绝对任何对象都可以向您发送具有相同字符串的通知,并且您将处理它。
在实践中,只要您选择唯一的通知字符串,这就很少成为问题。您会看到人们正是因为这个原因而使用com.my.app.name.notification
或kMyAppNotification
之类的内容。
至于你链接的特定代码行,我实际上并不知道实现细节,但我假设你添加了一个指向一个对象的notificationSender
属性的监听器,你还需要删除具有notificationSender
属性集的同一个侦听器,否则会因为不删除观察者而导致内存泄漏。但是我必须再次阅读文档来解决这个问题。