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