在所有的教程或例子,我覺得,他們表現出一個冒號的選擇器名稱(getCurrentData:
)後,像這樣:2約NSNotification中心快速問答
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getCurrentData:) name:@"mapsReceived" object:nil ];
由於沒有什麼這個冒號後例子,我假設指定的方法不帶任何參數。而我也沒有,但是當我使用上面的語法我的應用程序崩潰,並說unrecognized selector sent to instance
我刪除冒號,它的作品。那麼爲什麼所有的例子都顯示冒號?
其次,如果我確實使用需要參數的選擇器,我該怎麼做?如果我這樣做:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createButtons:@"ten grand";) name:@"mapsReceived" object:nil ];
它甚至不會編譯;在我刪除文本字符串和冒號之前,我會收到大量的錯誤。然而,我可以用這個字符串來調用這個方法,在NSNotification之外使用它時很好。有沒有辦法做到我想要的?
您「必須」不是,您「應該」。必須暗示它不會編譯,它會這樣做。應該暗示,如果你正在做另一種方式,你做錯了......這是真的。爲你+1:D – Kheldar
它可以編譯,但從上面鏈接的文檔:「指定接收方發送notification的消息的選擇器Observer將通知發佈通知給它。notificationSelector指定的方法必須有且只有一個參數(NSNotification的一個實例)「。 +1讚賞,雖然:) – marramgrass