A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐小妖mavs 中级黑马   /  2015-12-7 21:58  /  1001 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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关键字:
    告诉编译器这是一个协议

1 个回复

倒序浏览
还没学到,先怒顶一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马