我必须从cpp函数调用一个客观的C方法。
我有一个C类,在这个函数中需要它的对象地址。我确实遇到了another link,它指导我如何引用C类,并将其用于cpp函数的调用。
在我的例子中,有一个小的区别是C类已经被实例化了,我不想再次分配一个对象。那么我怎样才能得到它的对象地址呢?
代码如下所示:
import Cocoa/Cocoa.h
id refToC
@interface C: NSObject
{
;
somemethod;
;
}
@end
@implementation C
- (void) somemethod
{
;
;
}
@end
import C.h
void func()
{
//I need the address of object here, so as to invoke:
[refToC somemethod];
}
先谢谢
〜PS7
答案 0 :(得分:4)
id类型已经是指向对象的指针。创建有效对象后,例如:
refToC = [[C alloc] init]
答案 1 :(得分:1)
最简单的方法是使用singleton design pattern。这是在Objective-C中使用该模式的常用方法:
@interface Widget : NSObject {
// ...
}
// ...
- (void)someMethod;
+ (Widget *)sharedWidget;
@end
@implementation Widget
// ...
+ (Widget *)sharedWidget {
static Widget *instance;
@synchronized (self) {
if (!instance)
instance = [[Widget alloc] init];
}
return instance;
}
@end
void methodWrapper() {
[[Widget sharedWidget] someMethod];
}
答案 2 :(得分:0)
非常感谢您的指示。我错过了告诉C类是控制器类。我尝试在awakeFromNib中为自己分配refToC,而func()中的调用就像魅力一样。
感谢Matt和John的指示。
~ps7