繁体   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