2016-10-10 74 views
1

當前正在執行NS通知到我的第一個IOS應用程序中。我想要使​​用它,因此當用戶成功進行購買時,產品名稱會廣泛地展開,並且偵聽器將運行解鎖產品的方法。看看教程,我很困惑它是如何工作的,並且真的很感謝,如果這些可以被清除。我將發佈下面的代碼,我認爲它的確如此,如果他們有任何錯誤,請將其指出。NS Notification Confused Swift 3

第1行 - Let是一個無法更改的變量,NotificationName是變量的名稱。 Notfication.Name被宣佈名爲「通知標識符」

let notificationName = Notification.Name("NotificationIdentifier") 

2號線 - 我認爲這裏的「NotificationName」是上述由設定義的本爲監聽器ID。 如果我想傳入一個對象,這是在最後完成?通過對象標籤。 IE對象:產品請求

NotificationCenter.default.post(name: notificationName, object: nil) 

第3行這是偵聽器,通知名稱必須匹配郵件以接收我假設的正確通知。添加觀察者自我選擇器讓我感到困惑,如果我從上面的帖子行2傳入一個對象,即對象產品請求。這是否必須在偵聽器中聲明?

NotificationCenter.default.addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification), name: notificationName, object: nil) 

任何解釋,以進一步我的理解,讚賞。對不起,如果這些看起來像一個基本的問題,如何閱讀教程,我正在努力瞭解某些元素。

感謝

回答

0
  1. 正確的。
  2. 正確。您傳遞給postNotification方法的對象是發件人,可用於過濾同名的通知(第3頁)
  3. 當您訂閱特定通知並將對象傳遞給addObserver方法時,您將只收到通知這是與這個確切的對象一起發送的。如果您沒有在addObserver中指定它,您將收到所有帶有該名稱的通知。
  4. 不要忘記removeObserver只要你不需要再聽。如果您的聽衆是視圖控制器,則通過中的viewWillAppearremoveObserver中的viewDidDisappear方法通常是一種很好的做法。