黑马程序员技术交流社区

标题: block以及协议的总结 [打印本页]

作者: 沐小妖mavs    时间: 2015-12-7 21:58
标题: block以及协议的总结
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关键字:
    告诉编译器这是一个协议

作者: AGHM0312    时间: 2015-12-7 22:06
还没学到,先怒顶一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2