Sun*_*day 2 dealloc viewdidload nsnotificationcenter ios viewdidunload
添加和删除观察者的最佳做法是NSNotificationCenter什么?
我想知道如果加入self作为观察员viewDidLoad和删除self的viewDidUnload就足够了.也许我应该删除self的dealloc为好.
也许需要考虑低内存条件.我可以看到添加viewDidLoad和删除dealloc有问题:viewDidUnload由于内存不足而被调用...然后viewDidLoad在再次显示视图时被调用...现在self已被添加为观察者两次没有删除(因为dealloc不是所谓的).
注意:我正在考虑一个self引用UIViewController子类的基本示例.
我经常做我的UIViewController观察员注册viewWillAppear和我的删除viewWillDisappear.
viewWillDisappear似乎是一个更安全的选择对我比viewWillUnload,因为后者方法只在IOS版本低内存情况下被称为旧的比5.0.
最合适的答案可能取决于您的视图控制器正在做什么.您希望在视图显示之前得到(并且需要做出反应)通知吗?如果是这样,也许添加观察者viewDidLoad对你来说是正确的.
对于iOS 9+和OS X 10.11+,WWDC 2015会议202"Cocoa的新功能"宣布:
NSNotificationCenter
释放的观察者将自动取消注册
let center = NSNotificationCenter.defaultCenter()
center.addObserver(self,
selector: "localeChanged:",
name: NSCurrentLocaleDidChangeNotification,
object: nil)
Run Code Online (Sandbox Code Playgroud)
不需要打电话
let center = NSNotificationCenter.defaultCenter()
center.removeObserver(self,
name: NSCurrentLocaleDidChangeNotification,
object: nil)
Run Code Online (Sandbox Code Playgroud)
见:33:27的视频,pdf slide 241
| 归档时间: |
|
| 查看次数: |
3095 次 |
| 最近记录: |