簡單介紹下NSNotificationCenter

2021-06-07 20:48:33 字數 1193 閱讀 3129

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方法呼叫後,之前新增的觀察者就會收到通知了,當然,前提是這兩個訊息名要相同。

簡單介紹一下OGraph

摘要 該引擎的目標在於能夠渲染3d場景,和視覺化複雜網路 並且支援方便的資料介面,遊戲一般的互動體驗。引擎嵌入python為使用者提供api,編寫python 讀取處理資料後提交到渲染介面,即可實時渲染。使用瀏覽器核心向使用者展示ui,管理場景物件樹 物件屬性。使用者也可以自己重新編寫html頁面自...

簡單介紹一下Alienware

alienware是一家專門製造一些不計成本的超發燒級pc的北美電腦公司,當然在即使在北美這樣的公司也並不多見,除了 alienware之外還有voodoopc與另外一家相類似的品牌公司。alienware成立於1996年,公司總部在美國邁阿密,它的產品線包括高階遊戲台式電腦,遊戲膝上型電腦,工作站...

簡單介紹一下symbol

參考回答 es6 引入了一種新的原始資料型別 symbol 表示獨一無二的值,最大的用法是用來定義物件的唯一屬性名。es5的物件中的屬性名是字串,容易造成屬性名的衝突,如果有一種機制,保證每個屬性的名字都是獨一無二的,就可以從根本上防止屬性名的衝突。symbol是es6 的新增屬性,代表用給定名稱作...