我需要將消息傳遞給控制類(它創建將發送消息的類的實例)所以,我無法直接引用類文件名稱全球(這是荒謬做的,如果「NSNotification」通告到能夠通過各種消息,無論在哪裏/它們是什麼類。NSNotification addObserver:someOtherClass
所以事不宜遲......
(從Say ClassB調用)
ClassA創建Clas實例膽紅
現在ClassB
,我需要就按下按鈕的消息傳回多達ClassA
(insdie ClassB)
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:ClassA
selector:@selector(doLoginAction)
name:@"SomeButton"
object:nil];
[super viewDidLoad];
}
這將無法編譯,甚至當我有,對不起,"#import "ClassA.h"
現在,如果我做了什麼愚蠢的像,
ClassA *classa = [[ClassA alloc]init];
,然後使用這個新創建的addObserver:classa
ClassA的它將編譯的實例,但我思想,絕對不會做任何事情......(我知道,但令人驚訝的是,這種代碼在Iphone編程書籍中很流行......)所以我嘗試了它。
但如果我把這個功能ClassA
和使用addObserver:ClassB
它會被調用,但會導致堆棧轉儲unrecognized selector sent to instance
或使用addObserver:self
。
我忍不住要刪除Xcode和回到vim和使用好老的「C」回調...
很好的回答....非常感謝! – chinasailor 2011-01-19 07:43:41