淺談KVO, iOS的開發之旅
我們應該瞭解的基礎知識
所謂的KVO就是key-value-observeing, 翻譯過來就是 觀察者模式
首先我們應該知道KVO是不能直接監聽控制器ViewController陣列的變化的,需要將陣列定義在模型中,然後控制器ViewController持有模型物件,通過該物件才能監聽。
註冊監聽
addObserver:<#(nonnull NSObject *)#> forKeyPath:<#(nonnull NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>
重寫監聽方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context
移除監聽
[ removeObserver:self forKeyPath:@""];
程式碼如下
首先先設定ViewController的分類
@interface Model : NSObject
@property (strong,nonatomic)NSMutableArray *modelArray;
@end
實現部分
-(NSMutableArray *)modelArray{
if(!_modelArray){
_modelArray = [NSMutableArray array];
}
return _modelArray;
}
@end
//1.建立模型物件
[self.model addObserver:self forKeyPath:@"modelArray" options:NSKeyValueObservingOptionNew context:nil];
需要注意的是陣列的新增/刪除必須採用這個方法 mutableArrayValueForKeyPath
[[self.model mutableArrayValueForKeyPath:@"陣列名字"] addObject:@"新增的Object"];
[[self.model mutableArrayValueForKeyPath:@"陣列名字"] removeObject:@"刪除的Object"];
監聽方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{
if (![keyPath isEqualToString:@"modelArray"]) {
// NSLog(@"%ld",_model.modelArray.count);
return;
}
}
移除監聽
- (void)dealloc {
[_model removeObserver:self forKeyPath:@"modelArray"];
}
PS:日積月累, 天天進步
紀念單身狗的每一天...
相關文章
- iOS開發系列--Objective-C之KVC、KVOiOSObject
- iOS 淺談 RunloopiOSOOP
- 淺談模組化開發
- 淺談Blazor開發的那些事Blazor
- Swift iOS:KVOSwiftiOS
- iOS KVO初探iOS
- iOS KVC & KVOiOS
- 淺談 iOS Device ID 的修改iOSdev
- 淺談桌面應用程式的開發
- 淺談 Android 開發文化Android
- 淺談iOS Crash(2)iOS
- 淺談iOS Crash(一)iOS
- (iOS)KVO 的實現原理iOS
- 淺談設計模式在iOS開發實戰專案中的應用設計模式iOS
- iOS KVC與KVOiOS
- iOS之KVC KVOiOS
- android 開發淺談(JDK && NDK)AndroidJDK
- 淺談一下“敏捷開發”敏捷
- 淺談移動端混合開發
- iOS探索:Block解析淺談iOSBloC
- iOS記憶體淺談iOS記憶體
- 淺談 iOS 執行緒iOS執行緒
- iOS開發--通知,代理,KVO的區別,以及通知的多執行緒問題iOS執行緒
- 淺談軟體開發模型之瀑布開發和敏捷開發模型敏捷
- 淺談 iOS 中的檢視優化iOS優化
- 淺談直播教育平臺開發成本
- Android SDK 開發經驗淺談Android
- 淺談支付系統開發基本流程
- 淺談Python專案開發&管理Python
- 淺談移動端開發頁面
- JB測試之旅-淺談自動化知識
- 淺談健康技術社群與微軟MVP打造之旅微軟MVP
- 淺談 PHP 與手機 APP 開發(API 介面開發)PHPAPPAPI
- iOS開發面試攻略(KVO、KVC、多執行緒、鎖、runloop、計時器)iOS面試執行緒OOP
- iosswift4之kvo的使用iOSSwift
- iOS KVC與KVO簡介iOS
- iOS KVO學習記錄iOS
- iOS KVC和KVO詳解iOS