您有几个选项,具体取决于您的设置。以下是一些:
1) 在调用者的类中添加对具有函数(被调用者)的类的引用作为属性:
来电者.h
@interface Caller : SomeObject {
Callee *myCallee;
...
}
@property(nonatomic, retain) Callee *myCallee;
来电者.m
@synthesize myCallee;
-(void)someAction {
[myCallee doSomething];
}
在初始化两个类后设置 Caller 的东西:
caller.myCallee = callee;
2) 使用另一个通知事件,就像您已经知道该怎么做一样。
3) 如果您有一堆不同的类,调用者可能需要调用它们都支持相同的方法,请使用协议:
DoesSomething.h
@protocol DoesSomething
-(void)doSomething;
@end
被调用者.h
@interface Callee : NSObject<DoesSomething> { // NSObject or whatever you're using...
...
}
-(void)doSomething;
来电者.h
@interface Caller : SomeObject {
id<DoesSomething> *myCallee;
...
}
@property(nonatomic, retain) id<DoesSomething> *myCallee;
...然后按照示例 1.
4) 使用 performSelector 向类发送消息。
来电者.h
@interface Caller : NSObject {
SEL action;
id callee;
}
-(void)setupCallbackFor:(id)target action:(SEL)callback;
来电者.m
-(void)setupCallbackFor:(id)target action:(SEL)callback {
callee = target;
action = callback;
}
-(void)someAction {
if([callee respondsToSelector:action]) {
[callee performSelector:action];
}
我确信还有其他方法,并且每种方法各有利弊,但其中的某些内容应该满足您的需求和/或给您足够的扫描文档以填补任何空白...