2015-10-26 240 views
0

调用自定义关闭在Objective-C的我可以定义自己的块类型:斯威夫特

typedef void (^myBlock)(id param1, id param2, BOOL param3); 

然后定义块体在其他地方(例如,另一个班)做一些与像传递的值:

myBlock block = ^(id param1, id param2, BOOL param3) { 
if (param3){ 
    NSLog("parameters:%@,%@",param1,param2) 
}}; 

要做到同样的事情在斯威夫特我定义使用typealias我的块:

typealias myBlock = (param1:AnyObject, param2:AnyObject, param3:Bool) ->() 

,但我不能简单地调用它像:

let block: myBlock = {param1,param2,param3 in 
if (param3){ 
    print(param1,param2) 
}} 

,并有一个警告:

不变的值“块”的初始化从未被使用;考虑将 替换为'_'的赋值或删除它。

如何在Swift中调用myBlock并定义它的正文?

在此先感谢!

回答

0

您的声明没有任何问题。但正如这个词告诉你的,你只是宣布东西,而不是调用。所以封闭不会在任何地方被调用。

试试这个

typealias myBlock = (param1:AnyObject, param2:AnyObject, param3:Bool) ->() 

let block: myBlock = {(param1,param2,param3) in 
if (param3){ 
    print(param1,param2) 
}} 

block(param1: 1,param2: 2,param3: true) 

你必须与你当然值来代替实际参数。像操场屏幕截图中看到的那样起作用。

enter image description here

1

我认为会出现警告,因为您没有在代码中的任何位置使用“block”变量。

声明“block”变量后,尝试在代码中的某处使用它。