协议和block的区别
2015-11-20 20:48
253 查看
协议和block都可以用来不同页面之间的传值,block之前有过详细的说明
协议的话一共有4个步骤,一个是创建协议
分为两种分别是
@optional是可以选择不实现的
@required是必须实现的
第二步是实例化协议的属性
在需要的地方执行
什么叫做需要的地方呢?就是在你想要在什么时候或者什么事件下触发该协议,那么执行他
所以协议经常用在委托模式,委托其他的地方完成该事件。
第三步是设置执行协议的对象
最后就是在设置了协议对象的地方设置事件
里面就是要设置你要执行的事件了
协议和block用起来感觉差不多,也可能是我接触的代码比较少,不过从执行机制上看,协议的速度更快,因为它是直接在runtime里面增加地址的,让他可以直接查到,而block具体实现机制暂不清楚,不过肯定是比协议复杂的,因为协议是分开的而block是一整块
当然,小项目里面无所谓,用block会更加简单点就是了
协议的话一共有4个步骤,一个是创建协议
@protocol User_Info <NSObject> @required -(void)Set_User; @end
分为两种分别是
@required 和 @optional
@optional是可以选择不实现的
@required是必须实现的
第二步是实例化协议的属性
@property (strong, nonatomic) id<User_Info> delegate;
在需要的地方执行
[self.delegate Set_User];
什么叫做需要的地方呢?就是在你想要在什么时候或者什么事件下触发该协议,那么执行他
所以协议经常用在委托模式,委托其他的地方完成该事件。
第三步是设置执行协议的对象
User.delegate=self这步容易被忽略,但却很重要,没有这一步的话,编译器不知道他在哪里执行的这个协议
最后就是在设置了协议对象的地方设置事件
-(void)Set_User { }
里面就是要设置你要执行的事件了
协议和block用起来感觉差不多,也可能是我接触的代码比较少,不过从执行机制上看,协议的速度更快,因为它是直接在runtime里面增加地址的,让他可以直接查到,而block具体实现机制暂不清楚,不过肯定是比协议复杂的,因为协议是分开的而block是一整块
当然,小项目里面无所谓,用block会更加简单点就是了
相关文章推荐
- ====Android Studio Debug报错
- VS项目中修改某个项目文件名出现警告:warning MSB8028: The intermediate directory (Debug) contains files shared from an
- 倒计时
- 倒计时
- JSON数据解析
- 如何在Mac OS X上安装 Ruby运行环境
- 基于v4l2 ffmpeg x264的视频远程监控(附上编译好的库文件)
- 初始化列表的顺序应该是按照你成员声明顺序初始化
- 最新版SDWebImage的使用
- sublime text技巧
- list::swap函数
- 杭电4857 逃生
- 白话空间统计十九:热点分析(下):结果解读以及用R语言实现
- SDWebImage 的常用方法使用
- SDWebImage使用,图片加载和缓存
- Maven scope 参数含义
- error: two or more data types in declaration specifiers原因及解决方法
- 和菜鸟一起学linux之V4L2摄像头应用流程
- sublime使用常见技巧举例2
- web前端与移动开发---初学者须知