swift里面利用闭包达到和OC里面block的效果



在OC中,个人觉得block是很爽的,因为我是个很懒的人,能少写代码就少代码,想法设法的精简代码。
 这样 block 和 protocol(协议)相比较,block最和我的胃口,
 这样就不用再引入XXXDelegate,然后再self.delegate = self,再实现协议方法,用block阔以简单方便的取代协议。
 然而swift却没有block,所以呢,我研究了一下swift里,闭包代替block的写法,
 
  1> OC中的block:
   @property (nonatomic, copy) void(^testClosure)(NSString *name);
  2> swift里的闭包实现OC中的block类似的功能:
   var testClosure:((name: String ) -> ())?
 
 // 在对应的事件里的处理
 if testClosure != nil{
             testClosure!(name: "路过")
         } //判断非空 再调用
 
 说明: (( String ) -> ())?
 其中的Sting 就是block里面 那个回传参数 NSString *string ,而 -> 后面那个() 就是block最前面那个void  这样,
 二者比较一下,就清楚了。前提是,OC中block要会用,理解。
 但是,在其他类调用的时候 要注意了,swift里,联想功能不够全面 ,所以呢,需要你手写补全
 cell.testClosure = {(name) -> Void in
 println(name)  //= 号后面的东东 全是手动补全的
 }
 
 这一点也就是oc里面 调用block的另一种写法一样
(1) cell.testClosure = ^(NSString *name){
         // = 号后面的东东 也全是手动补全的
     };
 
(2)[cell setTestClosure:^(NSString *name){
 // 这一种呢,swift里面是没有的
 }];



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值