我需要将消息传递给控制类(它创建将发送消息的类的实例)所以,我无法直接引用类文件名称全球(这是荒谬做的,如果“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