指定一个快速closures(等效块)到一个现有的使用桥接访问的objective-c块
我正在使用Swift,并想知道是否有一种方法可以将闭包分配给现有的Objective-C块。
fromObjC?.performBlock = {someVar in /*do something*/}
它给我一个错误“不能分配给这个expression式的结果”。
所有指向objective-C中对象的指针都必须是可选的,因为指针可以是零。 如果你知道variables永远不会是零,你应该使用Implicitly Unwrapped Optionals( TypeName!
),这样你就不必打开它。
所以
void(^performBlock)( UIStoryboardSegue* segue, UIViewController* svc, UIViewController* dvc )
变为:
{(segue : UIStoryboardSegue!, svc : UIViewController!, dvc : UIViewController!) in // Implementation }
如果variables可能是零,你应该使用一个正常的选项,看起来像这样:
{(segue : UIStoryboardSegue?, svc : UIViewController?, dvc : UIViewController?) in // Implementation }
实际上,如果您将其分配给该属性,则不必指定types(它们是推断的):
{(segue, svc, dvc) in // Implementation }