iOS通知的一個坑

今天在一個控制器里面寫一個通知接收函數(shù)

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(action:) name:@"ntfName" object:nil];```
但是寫在了`ViewDidLoad`里面了,一般情況下這是沒有問題的,但是如果你這個頁面會重復(fù)出現(xiàn)并成為`window`的`rootViewController`的話,那就問題大了。因為沒出現(xiàn)一次,這個通知就會注冊一次,最后造成的后果就是你的通知響應(yīng)函數(shù)會執(zhí)行n次,是不是非常蛋疼,網(wǎng)上有好多人說卸載`dealloc`里面,但是一般ARC的工程基本不會執(zhí)行這個函數(shù)。
所以解決辦法就是把上面的接收通知的函數(shù)寫在頁面出現(xiàn)的函數(shù)里
  • (void)viewDidAppear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(action:) name:@"ntfName" object:nil];
    }```
    之后在頁面消失的時候移除通知的觀察者
- (void)viewWillDisappear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}```
一般情況下是遇不到這個坑的,但是如果發(fā)現(xiàn)你的通知響應(yīng)函數(shù)重復(fù)執(zhí)行,那么這個解決辦法可能會幫到你。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,624評論 30 472
  • 念念不忘是歸年 耳融目染是留念 可我只像個神經(jīng)病一般 總掛念著回不到的那一年 答非所問已變遷 雁字回時已千年 三生...
    瘋左閱讀 208評論 2 5
  • 春暖花開_jing閱讀 182評論 0 0
  • 這里的Unsafe并不是我們常說的Java自帶的sun.misc.Unsafe,而是io.netty.channe...
    三斤牛肉閱讀 2,129評論 0 0

友情鏈接更多精彩內(nèi)容