麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

IOS開發之KVC與KVO簡述

2019-11-14 19:30:57
字體:
來源:轉載
供稿:網友

KVC:Key-Value Coding

KVO:Key-Value Observing

 

Person.m

#import <Foundation/Foundation.h>@interface Person : NSObject{    //該訪問修飾符用于說明即使私有成員變量也可以通過kvc方式訪問和賦值    @PRivate    NSString *_name;    NSArray *_dogs;}@end@implementation Person@end

Dog.m

#import <Foundation/Foundation.h>@class Person;@interface Dog : NSObject{    @private    NSInteger _age;    Person *_owner;}@end@implementation Dog@end

PersonObserve.m

#import <Foundation/Foundation.h>#import "Person.h"@interface PersonObserve : NSObject@end@implementation PersonObserve- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{    Person *p = (Person *)object;    //使用kvc方式獲取成員變量keypath的值    NSLog(@"%@",[p valueForKey:keyPath]);}@end

main.m

#import <Foundation/Foundation.h>#import "Person.h"#import "PersonObserve.h"#import "Dog.h"int main(int argc, const char * argv[]) {    //觀察者類    PersonObserve *po = [[PersonObserve alloc] init];    Person *p = [[Person alloc] init];    //使用kvo方式對成員變量“name”的屬性值變化增加觀察者po    //po將在該屬性值發生變化時執行- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context方法    [p addObserver:po forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];        //通過kvc方式設置成員變量“name”的屬性值    //出發觀察者執行對應方法    [p setValue:@"zhangsan" forKey:@"name"];            //kvc中forKeyPath的用法    Dog *d = [[Dog alloc] init];    [d setValue:p forKey:@"owner"];    [d setValue:@"lisi" forKeyPath:@"owner.name"];        //移除對私有成員變量“name”的觀察    [p removeObserver:po forKeyPath:@"name"];            Dog *d1 = [[Dog alloc] init];    [d1 setValue:@10 forKey:@"age"];    Dog *d2 = [[Dog alloc] init];    [d2 setValue:@20 forKey:@"age"];            NSArray *array = [NSArray arrayWithObjects:d1,d2, nil];    [p setValue:array forKey:@"dogs"];            //kvc中valueForKeyPath數組內置表達式的用法    NSLog(@"dogs.age = %@",[p valueForKeyPath:@"dogs.age"]);    NSLog(@"dogs.age.sum = %@",[p valueForKeyPath:@"[email protected]"]);//dogs數組中age的總和    NSLog(@"dogs.age.avg = %@",[p valueForKeyPath:@"[email protected]"]);//dogs數組中age的平均值    NSLog(@"dogs.age.max = %@",[p valueForKeyPath:@"[email protected]"]);//dogs數組中age的最大值    NSLog(@"dogs.age.min = %@",[p valueForKeyPath:@"[email protected]"]);//dogs數組中age的最小值            return 0;}

結果:

2015-03-07 21:09:34.611 KVC&KOC[3079:122638] zhangsan2015-03-07 21:09:34.612 KVC&KOC[3079:122638] lisi2015-03-07 21:09:34.613 KVC&KOC[3079:122638] dogs.age = (    10,    20)2015-03-07 21:09:34.613 KVC&KOC[3079:122638] dogs.age.sum = 302015-03-07 21:09:34.613 KVC&KOC[3079:122638] dogs.age.avg = 152015-03-07 21:09:34.613 KVC&KOC[3079:122638] dogs.age.max = 202015-03-07 21:09:34.613 KVC&KOC[3079:122638] dogs.age.min = 10Program ended with exit code: 0

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品亚洲一 | 国产69精品久久久久孕妇黑 | 黄色片在线播放 | 毛片免费在线 | 日本在线播放一区二区 | 久久久久久三区 | 欧美一级淫片免费视频1 | 爱操在线| 视频一区 在线 | 婷婷一区二区三区 | 成人毛片在线免费看 | 91资源在线观看 | 亚洲无av | 国产美女的小嫩bbb图片 | 九一成人 | 精品久久久久久久久久久久久久久久久久久 | 99999久久久久久 | 久草资源在线观看 | 天天操天天骑 | www成人在线观看 | 欧美精品成人一区二区在线观看 | 欧美福利视频一区二区三区 | 久久久www免费看片 亚洲综合视频一区 | 国产亚洲精品久久777777 | av在线免费观看中文字幕 | 亚洲精品自在在线观看 | 精品亚洲va在线va天堂资源站 | 欧美视频一区二区三区四区 | 激情在线观看视频 | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | 欧美成人视 | 日本在线播放一区 | 亚洲成a| 天堂亚洲一区 | 色播一区| 欧洲色阁中文字幕 | 欧美日本不卡 | 视频一区 日韩 | 狠狠干五月天 | 久久国产精品二国产精品中国洋人 | 欧美视频在线一区二区三区 |