//KVO key value observer (键值观察者)
//跟属性层有关的操作会考虑使用kvo;1.注册观察者2.当被观察者的属性发生变化的时候,会回调系统的方法,处理数据 3.实现两个对象之间的同步
//注册观察者
@property (nonatomic,strong) UIColor *color;
//创建单例类
ColorManager *_manager;
@implementation ColorManager
+ (instancetype)shareManager {
//1.GCD创建
static dispatch_once_tonce;
dispatch_once(&once, ^{
_manager= [[ColorManager alloc] init];
});
// //2.锁创建
// @synchronized(self) {
// if (!_manager) {
// _manager = [[ColorManager alloc] init];
// }
// }
return _manager;
}
//添加观察着
/*
1.被观察者
2.观察者
3.观察的属性
4.观察新旧值的变化
5.传的参数
*/
[[ColorManager shareManager] addObserver:self forKeyPath:@"color" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
#pragma mark -- KVO系统回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"----->%@",change);
UIColor *color = change[@"new"];
self.view.backgroundColor = color;
}
//在要触发改变的页面进行修改主题
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event {
//改变被观察者的属性(必须通过调动set方法改变),修改主题
[ColorManager shareManager].color= [UIColor yellowColor];
}
///////////
/nonatomic非原子性操作,不加锁,存取效率高
//natomic原子性操作,加锁,会增加系统开销,效率低
@property (nonatomic,strong) UIColor *color;
//assign修饰基本数据类型
//weak修饰对象类型,对象会马上释放掉,然后置空
//unsafe_unretained和weak类似,唯一不一样的是释放掉之后不置空,会成为野指针
//id任意指针类型
//instancetype只能是当前类的对象类型唯一
+ (instancetype)shareManager;
//AFNetworking网络编程的第三方库
//get. post.上传下载.网络监测,图片异步加载(没有sdwebimage的性能好),需要在arc环境下使用
//3.0之后弃用NSURLConnection
//3.0之后运行的最低版本是xCode7.0 ,向下兼容支持的iOS系统的最低版本是iOS7
//icon必须是png格式的
网友评论