协议和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会更加简单点就是了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值