1. block的基本用法:
1) 无参无返回值:
void (^block名)() = ^(){ 代码块 };
调用: block名();
2) 有参无返回值:
void (^block名)(参数类型以及参数个数) = ^(参数类型以及参数个数){ 代码块 };
调用: block名(参数);
3) 有参有返回值:
返回值类型 (^block名)(参数类型以及参数个数) = ^^(参数类型以及参数个数){ 代码块 return 返回值; };
调用: block名(参数);
2. block访问外部变量:
1) 在block内部可以访问block外部的局部变量,当定义block的时候,block会把外部变量以const的方式复制一份,存放到block所在的内存中
2) 默认情况下,block内部不能修改外部的局部变量,如果非要修改,给局部变量加上_block关键字,则这个局部变量可以在block内部进行修改
3) 如果在block中将m的值改变了之后,后面在使用m的时候,使用的都是block中的m.
3. block作用:
* 封装代码,用来保存一段代码
——————————————— 协议(protocol)
1. 什么是协议:
协议就是一些方法的声明,一般写到一个.h的头文件中
一个协议可以遵守多个协议
协议的定义:(默认情况下遵守 NSObject协议)
@protocol 协议名称 <NSObject>
@end
声明协议的方法:
1) 必须实现的方法 @required
2) 选择实现的方法 @optional
2. protocol的其他用法:
1) 不能声明成员变量
2) 只要父类遵守了某个协议,那么子类也遵守
3) OC中的类可以遵守多个协议
4) 基协议是NSObject
5) 协议可以遵守多个协议
3. @required 和 @optional 都是协议中的关键字
1) @required 修饰的方法是必须要实现的,如果不实现,编译器会发出警告,默认的都是@required
2) @optional 修饰的方法可以实现,也可以不实现
——————————————— 代理模式
1. 什么是代理模式:
传入的对象,代替当前类完成了某个功能,成为代理模式
2. @protocol关键字:
告诉编译器这是一个协议
|
|