iOS 之 Block 的使用 (二)

上面第一部分说明了block的使用

当你明白了block这个玩意的时候,你会不会有疑问?

** 其实我们平常要做到的东西用正常代码就能做到,为什么还要用代码块?它可不简单啊! **

如果你没有这样的疑问,那么,能证明两点

1、你完全明白Block的用途,你知道在什么情况下会去用它(那你还看我这个干嘛!)

2、你根本就不明白Block这个东西,那你需要: iOS 之 Block 的使用 (一) 看看这个!

当然,对于大神来说,怎么样用它都可以,这不在我的能力范围之内....

OK,进入正题!

我呢,使用Block是为了简化被调用类传递数据到主调用类的,说白了就是代替代理,因为我觉得麻烦。

可是首先告诉大家,必须管理好内存,如果没有这个信心的话还是乖乖的使用代理吧。

例子:

BlockDemo.h
// 这里定义一个方法,会用到Block
- (void) show:(void(^)(BOOL finished))completion;
//当然要把Block定义出来
@property (nonatomic, strong) void (^completion)(BOOL cancelled);

BlockDemo.m
- (void) show:(void(^)(BOOL finished))completion{
	if (completion){
		_completion = completion;
	}
	BOOLfinished = Yes; // 这一段是随意的位置的,可以不在这个方法内,因为我们定义这个Block是整个类中公用的
	if(self.completion){
		self.completion(finished);// **标记A** 只有在这里的时候,才会真正的开始使用Block。
	}
}


 如果你看到这里迷惑了,我来跟各位打个比方吧,你可以将Block看做是一个int型的变量, int completionBlock。 

这相当于我们定义一个方法,在其他类(或者本类)使用的时候需要传入completionBlock, 因为我们希望这个参数将来能在整个类中使用,

我们定义一个公共参数 @property (nonatomic, assign) int  completionBlock; 

在实现方法里,我们实现这个方法的时候将传入的参数赋值给我们公用变量。

然后在任何时候使用这个公用变量。

这样是不是能更明白一点呢?

那就继续看下面我们是如何使用它的。

UseBlockDemo.h
@class BlockDemo;
BlockDemo *blockDemo;
UseBlockDemo.m
blockDemo = [[BlockDemo alloc] init];
[blockDemo show:^(BOOL finished){
	if(finished){
		NSlog(@"finished");
	}
}];//什么时候会调用这里的代码呢?就在上面的<span style="font-family: Arial, Helvetica, sans-serif;">BlockDemo的 **标记A** 那里</span>

到此为止了,以上就讲了我本人主要想使用和学习Block的原因,如果你跟我的目标相同,那么恭喜,你已经达到目标了,我可不知道你不择手段没有啊

其他的用法我目前还没有接触到,也没有看到过,我自己也研究过,可我的路到此为止了。希望你们能研究出来更多的用法,到时候可不要忘了无私的我TAT!


如果你从iOS 之 Block 的使用 (一)开始认真看到了现在这里,那么我以为,如果你的理解能力在正常人范围之内的话,应该已经完全理解了Block的内容

如果你还是不理解...   请再认真看看,我想你会理解的...  如果还是不理解,那么你可以联系我,评论还是留言还是私信我都会认真回复的



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值