簡體   English   中英

塊作為參數或C函數的返回值

[英]block as parameter or return value for C function

我在課堂上有這樣的財產:

@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中

* 一個:- *是的,您可以在c方法內部將引用傳遞給self。

* 2 :- *聲明目標c塊可能在語法上令人生畏,因此我不喜歡太系統化。

我會做

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

現在我將財產聲明為

@property (nonatomic, strong) ifSuccess mySuccessBlock;

你的功能變成

void myFunction(myClass *object,ifSuccess blockParameter) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM