我有一个小方案来调用两个不同类中的函数。
method
{
NSLog("printing variables 1 & 2 of secondClass.m");
}
如何调用firstClass方法并将这些变量发送到类进行打印?
答案 0 :(得分:1)
根据您要调用的函数类型,您可以创建静态函数。为此,只需声明+ (void)printA:(int)a andB:(int)b;
并在没有实例的情况下使用[Class2 printA:a andB:b]
进行调用。或者,如果要调用非静态方法,可以使用委派协议。
您可以创建类似
的协议@protocol PrintJobReceiver
- (void)printVariableA:(int)a andB:(int)b;
@end
让它符合class2
@interface Class2: NSObject <PrintJobReceiver> { }
@end
@implementation Class2
- (void)printVariableA:(int)a andB:(int)b
{
NSLog(@"a: %i b:%i",a,b);
}
@end
并在Class1
设置委托,然后您将用于打印(您将要传递Class2的实例)
@interface Class1:NSObject
{
id<PrintJobReceiver> delegate;
}
@property (nonatomic,readwrite, retain) id<PrintJobReceiver> delegate;
@end
@implementation Class1
@synthesize delegate;
@end
然后你可以在Class1中调用[delegate printVariableA:a andB:b];
。我通常使用它而不是传递对整个类的引用,以便只显示应该由类使用的函数(并且你不会试图使用你不应该使用的函数)