我在课堂上有这样的属性:
@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
中答案 0 :(得分:0)
* ONE: - *是的,您可以在c方法中传递对self的引用。
* TWO: - *声明目标c块可能在语法上令人生畏,所以我喜欢不那么系统化。
我会做
typedef void (^ifSuccess)(MyClass *myObject);
现在我将该属性声明为
@property (nonatomic, strong) ifSuccess mySuccessBlock;
你的功能变为
void myFunction(myClass *object,ifSuccess blockParameter) {
}