阻止作为C函数的参数或返回值

时间:2013-11-20 05:10:06

标签: objective-c c

我在课堂上有这样的属性:

@property (nonatomic, strong) void (^ifSuccess)(MyClass *myObject);

现在我需要在C函数中执行此操作:

if (self.ifSuccess) {
   self.ifSuccess(value);
}

但这不起作用,因为在C函数中我不会引用self。所以我需要将块作为参数传递给C函数。像这样:

void myFunction(myClass *object, XXX) {

}

XXX可能是

void(^ifSuccess)()

使功能像

void myFunction(myClass *object, void(^ifSuccess)()) {

}

请确认这是否正确。

问题是我无法在调用myFunction时传递self.ifSuccess。

这不起作用

myFunction(object, self.ifSuccess);

所以我需要一种方法来读取self.ifSuccess块并将其传递给函数。

如何?

注意:是的,这需要在C

1 个答案:

答案 0 :(得分:0)

* ONE: - *是的,您可以在c方法中传递对self的引用。

* TWO: - *声明目标c块可能在语法上令人生畏,所以我喜欢不那么系统化。

我会做

typedef void (^ifSuccess)(MyClass *myObject);

现在我将该属性声明为

@property (nonatomic, strong) ifSuccess mySuccessBlock;

你的功能变为

void myFunction(myClass *object,ifSuccess blockParameter) {

}