在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,回调的在使用过程的差异,更多是语法的差异。