Axe*_*xel 0 ios objective-c-blocks swift
我正在使用Swift,并想知道是否有一种方法可以为现有的objective-c块分配一个闭包.
fromObjC?.performBlock = {someVar in /*do something*/}
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误"无法分配给这个表达式的结果".
所有指向Objective-C中对象的指针在swift中必须是Optional,因为指针可以是nil.如果你知道变量实际上永远不会是nil,你应该使用Implicitly Unwrapped Optionals(TypeName!),这样你就不必打开它了.
所以
void(^performBlock)( UIStoryboardSegue* segue, UIViewController* svc, UIViewController* dvc )
Run Code Online (Sandbox Code Playgroud)
变为:
{(segue : UIStoryboardSegue!, svc : UIViewController!, dvc : UIViewController!) in
// Implementation
}
Run Code Online (Sandbox Code Playgroud)
如果变量可能为nil,则应使用普通的Optional,如下所示:
{(segue : UIStoryboardSegue?, svc : UIViewController?, dvc : UIViewController?) in
// Implementation
}
Run Code Online (Sandbox Code Playgroud)
实际上,如果要将其分配给该属性,则甚至不必指定类型(它们是推断的):
{(segue, svc, dvc) in
// Implementation
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |