Swift與OC閉包回調對比

在iOS開發中,實現回調的方式有:Delegate和Block。前者用變量指針實現,後者用函數指針實現。
閉包在Objective-C中被稱爲Block,在Swift中被成爲Closure(在Java中稱爲Lambda)
本文主要簡單記錄下 Swift使用閉包回調與OC的Block的使用差異。
1、定義
OC

typedef void(^fucBlock)(NSString *backMsg);

Swift

typealias fucBlock = (backMsg :String) ->()

2、創建
OC

@property (nonatomic, copy) fucBlock blockproerty;

Swift

var blockproerty:fucBlock!

3、使用,創建一個類processData
OC

- (void)processMethod
{
    if (self.blockproerty) {
        self.blockproerty(@"OK");
    }
}

Swift

func processMethod(cmdStr:String?){
        blockproerty!(backMsg:"OK")
    }

回調
OC

process.blockproerty = ^(NSString *backMsg) {
 NSLog(@"%@",backMsg);
});

Swift

process.blockproerty={ (backMsg) in
            print(backMsg)
        }

從上面的代碼對比,很清楚知道oc與Swift,回調的在使用過程的差異,更多是語法的差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章