在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,回調的在使用過程的差異,更多是語法的差異。