簡體   English   中英

將快速閉包(等效於塊)分配給使用網橋訪問的現有objective-c塊

[英]Assigning a swift closure (block equivalent) to an existing objective-c block being accessed using a bridge

我正在使用Swift,並且想知道是否可以將閉包分配給現有的Objective-C塊。

fromObjC?.performBlock = {someVar in /*do something*/}

它給我一個錯誤“無法分配給該表達式的結果”。

迅速地指向Objective-C中所有對象的指針必須是Optional,因為指針可以為nil。 如果您知道該變量永遠不會為nil,則應該使用Implicitly Unwrapped Optionals( TypeName! ),這樣就不必解包它。

所以

void(^performBlock)( UIStoryboardSegue* segue, UIViewController* svc, UIViewController* dvc )

變成:

{(segue : UIStoryboardSegue!, svc : UIViewController!, dvc : UIViewController!) in
    // Implementation
}

如果變量可能為nil,則應使用普通的Optional,它看起來像這樣:

{(segue : UIStoryboardSegue?, svc : UIViewController?, dvc : UIViewController?) in
    // Implementation
}

實際上,如果您將其分配給該屬性,則無需指定類型(可以推斷出它們的類型):

{(segue, svc, dvc) in
    // Implementation
}

暫無
暫無

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

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