簡單介紹NSNotificationCenter

2021-06-09 19:21:10 字數 1193 閱讀 6539

ios開發中有時會用到nsnotificationcenter,其實nsnotificationcenter的原理是乙個觀察者模式,包括了觀察者的註冊、通知及刪除等。

獲得nsnotificationcenter的方法只有一種,那就是[nsnotificationcenter defaultcenter],通過呼叫靜態方法defaultcenter就可以獲取這個通知中心的物件了,而nsnotificationcenter是乙個單例模式,而這個通知中心的物件會一直存在於乙個應用的生命週期。

很多訊息都會通過通知中心分發,比如你想在鍵盤收起時做一些事情,就可以寫乙個方法,比如叫keyboarddidhide:,然後只需要加上如下**:

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(keyboarddidhide:) name:uikeyboarddidhidenotification object:nil];

這樣,就可以在鍵盤收起的時候呼叫當前類的keyboarddidhide:方法了。類似uikeyboarddidhidenotification這樣的訊息名還有很多,如uikeyboarddidshownotification,uiwindowdidresignkeynotification等等。

我們如果想定製自己的訊息名也是很簡單的

nsnotificationcenter *notifycenter = [nsnotificationcenter defaultcenter];

[notifycenter addobserver:self selector:@selector(等到通知後呼叫的方法) name:你的訊息名,必須是nsstring型別 object:nil];

而傳送這個訊息其實也只需幾行**

nsnotificationcenter * notifycenter = [nsnotificationcenter defaultcenter];

nsnotification *nnf = [nsnotification notificationwithname:你的訊息名,必須是nsstring型別 object:新建乙個nsnotification需要的的物件];

[notifycenter postnotification:nnf];

當postnotification方法呼叫後,之前新增的觀察者就會收到通知了,當然,前提是這兩個訊息名要相同。

xgboost簡單介紹 xgboost介紹

xgboost是華盛頓大學博士陳天奇創造的乙個梯度提公升 gradient boosting 的開源框架。至今可以算是各種資料比賽中的大殺器,被大家廣泛地運用。接下來,就簡單介紹一下xgboost和普通的gbdt相比,有什麼不同。何為gradient boosting,gbdt請看我上篇文章 1.梯...

mysql的簡單介紹 mysql的簡單介紹

mysql的簡單介紹 資料庫的內部鏈結 1 連線管理器 使用者或應用程式連線 2 分析器 3 快取區4 優化器 優化器執行的結果交由儲存引擎,再轉向物理層 表空間 myisam每個表有三個檔案 frm 表結構 myd 表資料 myi 表索引 innodb 所有表空間再乙個檔案 資料庫失敗的原因 1 ...

CMM 簡單介紹

什麼是cmm?cmm capability maturity model 軟體能力成熟度模型 國際公認的評估軟體過程成熟度的行業標準 由美國卡內基梅隆大學的軟體工程研究所 sei software engineering institute 受美國國防部委託研究制定並在美國,隨後在全世界推廣實施的一...