Я стучу головой о стену, пытаясь понять, можно ли вызвать функцию, определенную в другом классе. К сожалению, мои ограниченные знания в Задаче C не позволили мне найти удовлетворительный ответ. По сути, у меня есть один класс с именем Caller
и другой класс с именем Functions
, к которому я хотел бы подключиться во время выполнения. В классе Functions
будут определены все функции, на которые будет ссылаться вызывающая сторона во время выполнения.
Это полный код:
--- Caller.h -------------------
#import "Functions.h"
@interface Caller
{
int callerId;
NSMethodSignature *sig;
NSInvocation *func;
}
@property(retain) NSInvocation* func;
@end
--- Caller.m -------------------
#import "Caller.h"
@implementation Caller
@Synthesize func;
-(id)initWithFunction: (SEL)f
{
if (self)
{ Sig = [Caller instanceMethodSignatureForSelector: f];
func= [NSInvocation invocationWithMethodSignature: Sig];}
return self;
}
@end
--- Functions.h -------------------
@interface Functions
-(int)SayHello;
@end
--- Functions.m -------------------
#import "Functions.h"
@implementation
-(int)SayHello
{
NSLog(@"Hello");
return 0;
}
---------main.m-----------------
#import <Foundation/Foundation.h>
#import "Caller.h"
#import "Functions.h"
int main
{
NSAutoreleasePool * pool [[NSAutoreleasePool alloc]init];
Functions* ftn = [[Functions alloc]init];
Caller * c = [[Caller alloc]initWithFunction: @selection(SayHello)];
[c.func setTarget:c];
[c.func invoke];
[pool drain];
return 0;
}
Код компилировался нормально, но во время выполнения он столкнулся с ошибкой, поскольку instanceMethodSignatureForSelector
равно 0. Если я сделаю Caller
наследование класса от Functions
класса, то программа будет работать как чудо. Но класс Functions
в моем случае должен быть независимым от класса Caller
. Есть ли работа вокруг?