如何在Objective-C中获取对象的地址

时间:2009-07-06 14:03:47

标签: objective-c

我必须从cpp函数调用一个客观的C方法。

我有一个C类,在这个函数中需要它的对象地址。我确实遇到了another link,它指导我如何引用C类,并将其用于cpp函数的调用。

在我的例子中,有一个小的区别是C类已经被实例化了,我不想再次分配一个对象。那么我怎样才能得到它的对象地址呢?

代码如下所示:

C.h

import Cocoa/Cocoa.h

id refToC

@interface C: NSObject
{

;

somemethod;

;
}

@end

C.M

@implementation C

- (void) somemethod
{
;
;
}

@end

B.mm

import C.h

void func()
{

//I need the address of object here, so as to invoke:
[refToC somemethod];
}

先谢谢

〜PS7

3 个答案:

答案 0 :(得分:4)

id类型已经是指向对象的指针。创建有效对象后,例如:

refToC = [[C alloc] init]

答案 1 :(得分:1)

最简单的方法是使用singleton design pattern。这是在Objective-C中使用该模式的常用方法:

Widget.h

@interface Widget : NSObject {
    // ...
}

// ...

- (void)someMethod;
+ (Widget *)sharedWidget;

@end

Widget.m

@implementation Widget

// ...

+ (Widget *)sharedWidget {
    static Widget *instance;

    @synchronized (self) {
        if (!instance)
           instance = [[Widget alloc] init];
    }

    return instance;
}

@end

CppWrapper.mm

void methodWrapper() {
    [[Widget sharedWidget] someMethod];
}

答案 2 :(得分:0)

非常感谢您的指示。我错过了告诉C类是控制器类。我尝试在awakeFromNib中为自己分配refToC,而func()中的调用就像魅力一样。

感谢Matt和John的指示。

~ps7