我需要将一条消息传递给一个控制类(它会创建一个将要发送消息的类的实例)所以,我不能直接在我的文件中引用类名,而不是让它成为一个全局(这是荒谬的如果"NSNotification"广告宣传能够传递各种消息,无论他们在哪里/什么类.
所以没有进一步的...
(从Say ClassB打电话)
ClassA创建ClassB的实例
现在ClassB,我需要传递有关按钮按下的消息ClassA
(insdie ClassB)
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:ClassA
selector:@selector(doLoginAction)
name:@"SomeButton"
object:nil];
[super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)
这不会编译,即使我包括,对不起,"#import "ClassA.h"
现在,如果我做一些愚蠢的事情,
ClassA *classa = [[ClassA alloc]init];
Run Code Online (Sandbox Code Playgroud)
然后使用这个新创建的classa实例addObserver:classa将编译,但正如我所想,绝对不会做任何事情......(我知道,但令人惊讶的是这种代码在Iphone编程书籍中很流行......)所以我试过了无论如何.
但是,如果我将此函数放入ClassA并使用addObserver:ClassB
它将被调用,但会导致堆栈转储unrecognized selector sent to instance
或使用addObserver:self.
我很想删除Xcode并回到vim并使用旧的"C"回调...
iphone ×1