指定一个快速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 }