block
1 发送者定义block类型,
2 发送者创建block属性,
3 发送者将数据封装进block中,
4 接受者那里创建发送者对象,发送者调用带数据的block方法并实现处理数据的代码
//1 定义block
//returnType:返回类型,没有为void
//^<
//arguments:参数
typedef <
//2 创建block属性
//copy修饰block类型
@property(nonatomic, copy)BlockName blockName ;
//3传入数据
_blockName(数据)
//4 接受者类里
(id)sender.blockName(数据){
... ...
}
代理协议
1 发送者创建代理协议,协议中约定方法,以及方法的参数和返回值
2 发送者创建代理属性
3 发送者通过代理调用协议方法,并传入数据
4 接受者签订协议,并设置发送者代理为自己,实现协议方法
@protocol <#protocol name#> <NSObject>
<#methods#>
@end
@property (nonatomic, weak)id<protocol name delegete;
if (_delegete) {
[_delegete 协议方法];
}
(id)sender.delegete = self;
-()协议方法{
}
通知
- (void)postNotificationName:(NSString *)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo;
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable id)anObject;
- (void)aSelector(NSNotification *)notification {
}
移除通知(必须移除),再覆写dealloc时
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}