iOS開發 KVO觀察容器類

2021-06-28 23:24:51 字數 2468 閱讀 5327

nsmutablearray、nsmutabledictionary、nsmutableset

project型別為mac os x-commandline tooles
首先實現資料類,有三個屬性,分別是這三個集合類的物件

dataclass.h:

//

// dataclass.h

// kvo_qhy

//// created by ihefe36 on 15/3/6.

//#import

@inte***ce

dataclass : nsobject

@property (strong, nonatomic) nsmutablearray *array;

@property (strong, nonatomic) nsmutabledictionary *dictionary;

@property (strong, nonatomic) nsmutableset *set;

@end

dataclass.m:

//

// dataclass.m

// kvo_qhy

//// created by ihefe36 on 15/3/6.

//#import "dataclass.h"

@implementation

dataclass

- (instancetype)init

return

self;

}@end

實現觀察者類,用以接收通知

observer.h

//

// observer.h

// kvo_qhy

//// created by ihefe36 on 15/3/6.

//#import

@inte***ce

observer : nsobject

@end

observer.m

//

// observer.m

// kvo_qhy

//// created by ihefe36 on 15/3/6.

//#import "observer.h"

@implementation

observer

- (void)observervalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context

if ([keypath isequaltostring:@"dictionary"])

if ([keypath isequaltostring:@"set"])

}@end

main.m

//

// main.m

// kvo_qhy

//// created by ihefe36 on 15/3/6.

//#import

#import "dataclass.h"

#import "observe.h"

int main(int argc, const

char * argv)

return

0;}

這兩者的實現方法類似,所以放到一起
容器類的kvo要結合kvc才能接收到通知

//將**插入帶main.m的todo下方,執行即可看到log

[[data mutablearrayvalueforkey:@"array"] addobject:@"testdata"];

[[data mutablesetvalueforkey:@"set"] addobject:@"testdata"];

實現方式與前兩者略有不同,但也是要結合kvc,目前是沒有類似的mutabledictionaryvalueforkey:的方法可供直接使用的

//這裡直接使用.語法獲取字典物件

[data willchangevalueforkey:@"dictionary"];

[data

.dictionary setobject:@"testvalue" forkey:@"testkey"];

[data didchangevalueforkey:@"dictionary"

];

iOS 自動移除KVO觀察者

對nsobject寫乙個分類 import inte ce nsobject fmobserverhelper void fm addobserver nsobject observer forkeypath nsstring keypath end 物件被釋放之前,會呼叫dealloc方法,其持有...

iOS開發 通訊方式之KVO

kvo即鍵值觀察者,它提供了乙個觀察者模式,用於監聽某個物件屬性值的變化,可以實現乙個觀察者,乙個被觀察者,多個接收者之間的通訊關係。kvo的工作流程 1.被觀察者屬性發生變化 child 物件的cleanvalue 發生變化 2.觀察者監聽到屬性的變化 kvo幫我們實現了觀察者的業務邏輯 3.觀察...

iOS開發之觀察者

觀察者事件 註冊必刪除 indexviewinformation sharedinstance addobserver self forkeypath selectedmoremodel options nskeyvalueobservingoptionnew nskeyvalueobserving...