Block是iOS 4.0之后添加的新特性支持。
使用Block最大的便利就是简化的回调过程。以前使用UIView的动画,进程要控制动画结束后进行相应的处理。iOS 4.0之后,UIView新增了对Blocks的支持,现在只要使用简单的一个Blocks代码就可以在写动画的代码部分直接添加动画结束后的操作。eg
//动画效果
self.transform = CGAffineTransformMakeScale(0.1, 0.1);
self.alpha = 0;
[UIView animateWithDuration:.35 animations:^{
self.alpha = 1;
//设置scale大小
self.transform = CGAffineTransformMakeScale(1, 1);
}];
self.transform = CGAffineTransformMakeScale(0.1, 0.1);
self.alpha = 0;
[UIView animateWithDuration:.35 animations:^{
self.alpha = 1;
//设置scale大小
self.transform = CGAffineTransformMakeScale(1, 1);
}];
还有就是在使用Notification 时候Block也非常有帮助。反正多用就可以体会到Block的优美了。
对了,使用Blocks要谨记别造成对象互相引用对方导致引用计数进入一个循环导致对象无法被释放。iOS 5.0之后的ARC也是无法解决该潜在的互相引用的问题的。所以写Blocks的时候要注意这点。因为Blocks往往在后台自动对一些它引用了的对象进行retain操作。。