[英]methods aren't getting called after adding class as observer for notifications
我有一個名為CoreSpotlight(NSObject class)的類,在該類中,我有一些需要響應通知的方法。 我正在嘗試在應用程序委托中創建此類的實例,並且我調用了將該實例本身添加為觀察者的方法。
func addCoreSpotLightAsObserverForItemInstallerNotifications() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "addNewInstalledItemToSpotlightIndex:", name: "ItemInstallerItemInstalledNotification", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "removeUninstalledItemFromSpotlightIndex:", name: "ItemInstallerItemUninstalledNotification", object: nil)
NSLog("Corespotlight added as observer///////////////////////////////////////////")
}
這就是我在應用程序didFinishLaunchingWithOptions中的應用程序委托中調用方法的方式
let coreSpotlightInstanceClass = CoreSpotlight()
coreSpotlightInstanceClass.addCoreSpotLightAsObserverForItemInstallerNotifications()
由於某種原因,這些方法無法響應通知。 先感謝您
您正在創建您的CoreSpotlight
實例作為didFinishLaunchingWithOptions
函數內部的局部變量,因此,一旦該函數退出,該對象就會被釋放。
您應該創建一個實例屬性來存儲引用。
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
let spotlightHandler = CoreSpotlight()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.spotlightHandler.addCoreSpotLightAsObserverForItemInstallerNotifications()
return true
}
盡管如果您只是在CoreSpotlight init
函數中調用addCoreSpotLightAsObserverForItemInstallerNotifications
(我也必須說這也是一個非常糟糕的函數名),代碼會更干凈。 然后,除了在保留變量中實例化該類的實例外,您無需執行任何其他操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.