關于nsnitification的注冊和銷毀

在需要監聽某件事情或者傳值我們可能會想到通知這種模式,但是在ARC環境下仍需要對監聽者處理,不然會可能發生錯誤,notificationCenter (監聽的創建是一種單例模式),首先使用通知會有一個廣播post和一個觀察者addobserve,首先我們要在用到的地方注冊一個通知來接受傳遞的值:
- (void)viewDidLoad {
[super viewDidLoad];

      [[NSNotificationCenter defaultCenter] addObserver:self 
         selector:@selector(registration:) name:@"registration" object:nil];
             }
 -(void)registration:(NSNotification *)noti{

      NSDictionary *dic = noti.userInfo;
         NSLog(@"dic:%@",dic);
      }

如果我們是在viewDidLoad中注冊的通知,一般會在

  -(void)dealloc{
         [[NSNotificationCenter defaultCenter] removeObserver:self];
       }

移除這個通知,因為通知是很占內存的,防止內存泄漏而導致程序崩潰。
這中移除是看在哪里添加的通知,只要在這個視圖view或者控制器viewController被釋放之前把這個通知移除就好了。
我就在移除通知的時候遇到過坑,在視圖被釋放了,可是通知還在,導致了程序的崩潰,而且最讓人頭疼的是,這種情況在控制臺可能不會被答應出來!!在移除通知一定要懂得代碼執行的順序,進行操作。今天還遇到了一個坑,就是我們有一個測試版本和一個appstore版本,寫入的代碼每次都在測試版本上運行測試了,然而打了一個appstore的測試版本后一些文件沒有勾選appstore版本,那么可想而知缺少的文件是多么的讓人蛋疼。正確應該是這樣的。


image.png

然而沒有勾選

image.png

那么就炸了!一定要注意!
明天寫一寫iOS10的本地推送。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,252評論 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協議。它實...
    香橙柚子閱讀 24,124評論 8 183
  • 天氣真的很熱 我只是很久不勞動 內心總裝滿愧疚 看媽媽滿頭大汗 我卻吹著空調 我蹲在地上 一點點擦拭廚房 墻角、柜...
    而今起閱讀 181評論 0 0
  • 這兩天一直心緒不寧,思來想去,還是因為自己的一位新朋友無緣由地離我而去感到不安。 我為什么會對這件事...
    那時花開花落閱讀 197評論 0 0
  • 愿你能找到你生命中的燈塔 1 起型幾何結構的拆解、半圓、長方形、梯形 鋪淺色 刻畫細節集中精力在窗戶、磚瓦、暗部 ...
    貍大叔閱讀 589評論 4 6