У вас есть несколько вариантов, в зависимости от ваших настроек. Вот некоторые из них:
1) Добавьте ссылку на класс с помощью функции (вызываемого) в качестве свойства в классе вызывающего:
Caller.h
@interface Caller : SomeObject {
Callee *myCallee;
...
}
@property(nonatomic, retain) Callee *myCallee;
Caller.m
@synthesize myCallee;
-(void)someAction {
[myCallee doSomething];
}
То, что устанавливает Caller после инициализации обоих классов:
caller.myCallee = callee;
2) Используйте другое событие уведомления, как будто вы уже знаете, как это сделать.
3) Используйте протокол, если у вас есть куча разных классов, которые Caller может вызвать, которые все поддерживают один и тот же метод:
DoesSomething.h
@protocol DoesSomething
-(void)doSomething;
@end
Callee.h
@interface Callee : NSObject<DoesSomething> { // NSObject or whatever you're using...
...
}
-(void)doSomething;
Caller.h
@interface Caller : SomeObject {
id<DoesSomething> *myCallee;
...
}
@property(nonatomic, retain) id<DoesSomething> *myCallee;
... Тогда по примеру 1.
4) Используйте executeSelector для отправки сообщения классу.
Caller.h
@interface Caller : NSObject {
SEL action;
id callee;
}
-(void)setupCallbackFor:(id)target action:(SEL)callback;
Caller.m
-(void)setupCallbackFor:(id)target action:(SEL)callback {
callee = target;
action = callback;
}
-(void)someAction {
if([callee respondsToSelector:action]) {
[callee performSelector:action];
}
Я уверен, что есть другие способы, и у каждого из них есть свои плюсы и минусы, но что-то там должно соответствовать вашим потребностям и / или дать вам достаточно для сканирования документации, чтобы заполнить любые пробелы ...