2015-10-26 231 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」變量後,嘗試在代碼中的某處使用它。