前言:
block这个名词对于做一般开发者来说可能会觉得稀奇古怪而非常陌生,但是对于iOS工程师来说,在整个开发中到处都是它的影子,今天一大早觉得在假期学习一下它,对明年的iOS开发工作做个准备,突然有点找回当年即将毕业时的最后一个春节假期的感觉,今天基于最近使用的角度来学习总结一下block。
什么是Block?
block是对象,它封装了一段代码,这段代码可以在任何时候执行。block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是
inline
的,并且它对局部变量是只读的,^是block语法的标识。
声明block
第一种方式:用typedef定义一个block类型
typedef void (^Sucess)(NSString*);//用typedef定义一个block类型@property (nonatomic,copy) Sucess myBlock;
第二种方式:也可以通过标准的block函数体
@property (nonatomic,copy) void(^myBlock)(NSString*);
完整的block: NSString* (^callBack) (NSString *)
第一个参数:block返回值
第二个参数:block名字
第三个参数:block回调参数
NSString* (^callBack) (NSString *) =^(NSString *string){ NSMutableString * tempString=[[NSMutableString all