3

我有一个目标 c 类,它有一个NSString具有如下属性的对象:

@property (nonatomic,retain) NSString *data;

现在,从 ac 函数,我想做 : data=@"abc";,但 c 函数看不到data

我将如何从同一个类中的纯 c 函数访问数据?我尝试在 c 函数中创建该类的对象,但它崩溃了。

编辑 :

我也尝试使用参数调用 obj c 函数,我可以调用该函数但没有参数:(在 C 函数中)

     NSString *ran=@"";
    [refToSelf postNotification:ran];

不通过就这样做ran是有效的。我怎么通过ran ??

4

1 回答 1

15

如果您在 Objective-C 文件中有 C 函数,那么要求很简单;你需要一个你想弄乱的对象的引用。

void func(MyClass* anObj) {
    [anObj setData: @"foo"];
    anObj.data = @"foo"; // same as the line above
}

@interface MyClass:NSObject
@property(nonatomic,copy) NSString *data;
@implementation MyClass
- (void) callCFunc
{
     func(self);
     // the "data" property will now be set to @"foo"
}
@end

不多也不少。在 C 函数中调用方法与从方法中调用其他实例或类的方法完全没有什么不同。实际上,方法只不过是带有默认值self_cmd参数的 C 函数。

目前尚不清楚您对编辑的要求。如果你“不能通过ran”,那么这意味着你正在调用一个没有参数的方法:

- (void)postNotification;

如果你想通过ran,那么你需要一个可以使用参数的方法:

- (void)postNotification:(NSString*)data;
于 2013-01-26T18:55:00.880 回答