iOS Objective-C與Swift閉包(block)寫法

前言

在項目開發(fā)中經常會去查iOS閉包怎么寫,因為它的語法太古怪,兩種語言寫法不一,經常搞混,干脆記錄下常用的寫法算了

閉包定義

閉包是指可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環(huán)境中定義(局部變量)?!伴]包” 一詞來源于以下兩者的結合:要執(zhí)行的代碼塊(由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和為自由變量提供綁定的計算環(huán)境(作用域)。

聲明閉包(block)

typedef NSString *(^blockCallback)(NSString *parameter1, NSString *parameter2);
//回調閉包 用于評價成功后
    typealias callbackFunc = (_ orderId:String ) -> Void
    var evaluationBlockCallback:callbackFunc?

定義閉包(block)

>第一種方式 使用聲明
@property (nonatomic,strong) blockCallbackType blockCallbackName;

_blockCallbackName = ^(NSString *parameter1,NSString *parameter2){
        return parameter1;
    };
>第二種方式 不使用聲明
@property (nonatomic,strong) NSString *(^blockCallbackName2)(NSString *parameter1, NSString *parameter2);

_blockCallbackName2 = ^(NSString *parameter1,NSString *parameter2){
        return parameter1;
    };
let blockCallbackName:String = {(parameter1:String,parameter2:String) ->String in
            return parameter1
        }("parameter1","parameter2")

函數定義閉包(block)

-(void)functionUseBlock:(NSString* (^)(NSString *parameter1, NSString *parameter2))callBackOne callBackTwo:(blockCallbackType)callBackTwo{
    if (callBackOne) {
        callBackOne(@"parameter1",@"parameter2");
    }
    if (callBackTwo) {
        callBackTwo(@"parameter1",@"parameter2");
    }
}
func functionUseBlock(callBack:(String,String) ->String) -> Void  {
        print(callBack("parameter1","parameter2"))
    }

調用函數閉包(block)

[self functionUseBlock:^NSString *(NSString *parameter1, NSString *parameter2) {
        return parameter1;
    } callBackTwo:^NSString *(NSString *parameter1, NSString *parameter2) {
        return parameter1;
    }];
self.functionUseBlock = { (parameter1, parameter2) -> String in
            return parameter2
        }

結尾

Swift 版本根據參數和返回值有很多縮寫方式,這里就不一一寫上了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容