我瞭解通知,海報和觀察者的內容。NSNotification的工作原理
但我很難理解我們的應用程序或操作系統是如何理解並將標誌/通知發送給觀察員級的?
這是什麼機制?
您的回答和幫助將不勝感激。
謝謝
ID。
我瞭解通知,海報和觀察者的內容。NSNotification的工作原理
但我很難理解我們的應用程序或操作系統是如何理解並將標誌/通知發送給觀察員級的?
這是什麼機制?
您的回答和幫助將不勝感激。
謝謝
ID。
爲了發送通知,對象發送:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notif_key" object:nil userInfo:userDict];
現在,聽「notif_key」命名的通知@每一個活着的對象都可以做一些動作。
你如何讓對象聽?
它需要運行:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"notif_key" object:nil];
和當第一對象將發送所述通知,觀察者對象將運行「doSomething的:」方法。
注:
想象通知中心是一個字典,其中包含觀察者列表(及其指定的操作方法)的通知名稱和值的鍵。發佈通知時,獲取並重復該通知名稱的觀察者列表。每個觀察者都使用通知信息調用其操作方法。
此外,在迭代過程中,還會檢查通知對象是否對觀察者感興趣(根據添加觀察者時提供的參數)。
通知過程在發佈通知的線程上執行。
不要考慮嘗試依賴任何與觀察者添加方式和時間相關的隱含順序。
加上你的理解,這需要一些時間來消化我的頭腦。儘管它沒有說明它是如何在內部工作的,但它告訴我們如何實現它的工作
在多線程應用程序中,通知總是在發佈通知的線程中傳遞,可能不是相同的線程觀察員註冊自己。
因此,通知可以在任何線程註冊,但與通知相關聯的方法在該通知公佈的線程上運行,所以如果我們想做出任何更改我們將UI分派給主線程。
那麼,如果我發佈了一個有'n'個觀察者的通知,是否會導致內部循環迭代'n'次? – Gokul
是的,它的確如此。它可能會迭代更多,你不知道... – Wain