[英]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.