iOS KVC齿风、KVO

今天面試兩家公司,下午就得到了一個公司的答復(fù)绑洛,直接被拒救斑,心很痛,其實挺想去那家公司的真屯,無奈

今天面試的兩家公司都有了共同的問題:

1脸候、說說了解的KVC、KVO绑蔫;

2运沦、說說你常用的第三方庫,類似AFNetWorking配深,如何調(diào)用携添,怎么用;

3篓叶、在什么情況下會用到weak烈掠,為什么不能用strong

KVC (key value coding)

KVC 就是鍵值編碼(key-value-coding)。

KVC 的主要作用:

1缸托、修改私有成員變量 -》可以修改系統(tǒng)的類的成員變量

2左敌、賦值:

????2.1、keyPath包含了key的所有功能

????2.2俐镐、forKeyPath 進(jìn)行內(nèi)部的點語法,層層訪問內(nèi)部的屬性

? ? 2.3矫限、注意: key值一定要在屬性中找到 (對應(yīng)屬性值)

3、kvc可以自動類型轉(zhuǎn)換 -》網(wǎng)絡(luò)請求數(shù)據(jù)時候有幫助

4、kvc可以字典轉(zhuǎn)模型叼风,用上

- (instancetype)initWithDict:(NSDictionary*)dict{

? ? if(self= [super init]) {

? ? ? ? [self setValuesForKeysWithDictionary:dict];

? ? }

?return self;?}

- (NSString*)description{

? ? return [NSString stringWithFormat:@"屬性1:%@----屬性2:%.2f", _屬性1, _屬性2];

}

?[self setValuesForKeysWithDictionary:dict];


但是P页狻!咬扇!開發(fā)中是不建議使用setValuesForKeysWithDictionary:

?1、 字典中的key必須在模型的屬性中找到

?2廊勃、 如果模型中帶有模型,setValuesForKeysWithDictionary不好使

所以懈贺,這個?setValuesForKeysWithDictionary的應(yīng)用在是簡單的字典轉(zhuǎn)模型 ---> 框架 (MJExtention) 復(fù)雜一定的字典一樣轉(zhuǎn)不了模型,一樣轉(zhuǎn)出來都是字典坡垫;

//字典轉(zhuǎn)模型梭灿,使用的是mj_objectWithKeyValues:方法User *user = [Usermj_objectWithKeyValues:dict];

// JSON字符串轉(zhuǎn)模型User *user = [User mj_objectWithKeyValues:jsonString];

復(fù)雜的字典 --> 模型 (模型里面包含了模型)

模型類Status定義:

@interfaceStatus:NSObject@property(copy,nonatomic)NSString*text;@property(strong,nonatomic) User *user;/* 其他模型類型 */@property(strong,nonatomic) Status *retweetedStatus;/* 自我模型類型 */@end

使用實例:

NSDictionary*dict = @{@"text":@"Agree!Nice weather!",@"user": @{@"name":@"Jack",@"icon":@"lufy.png"},@"retweetedStatus": @{@"text":@"Nice weather!",@"user": @{@"name":@"Rose",@"icon":@"nami.png"}? ? }};

//字典轉(zhuǎn)模型,模型里面含有模型Status *status = [Status mj_objectWithKeyValues:dict];

NSString*text = status.text;

NSString*name = status.user.name;

NSString*icon = status.user.icon;

NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);

// text=Agree!Nice weather!, name=Jack, icon=lufy.pngNSString*text2 = status.retweetedStatus.text;

NSString*name2 = status.retweetedStatus.user.name;

NSString*icon2 = status.retweetedStatus.user.icon;

NSLog(@"text2=%@, name2=%@, icon2=%@", text2, name2, icon2);


5冰悠、取值方法

?NSLog(@"%@ --- %.2f", [類名 valueForKeyPath:@"屬性"], [[類名 valueForKey:@"屬性"] floatValue]);


6堡妒、模型轉(zhuǎn)字典 - 》往服務(wù)器上傳數(shù)據(jù)

person.name=@"lurry";

person.money=21.21;

NSDictionary *dict = [person dictionaryWithValuesForKeys:@[@"name", @"money"]];


7、取出數(shù)組中所有模型中的某個屬性

?NSArray*allPersons =@[person1, person2, person3];

?NSArray*allPersonName = [allPersons valueForKeyPath:@"name"];


KVO-Key Value Observing (鍵值監(jiān)聽)--->當(dāng)某個對象的屬性值發(fā)生改變的時候(用KVO監(jiān)聽)

?作用:給對象綁定一個監(jiān)聽器(觀察者)

?? ? - Observer 觀察者

?? ? - KeyPath 要監(jiān)聽的屬性

?? ? - options 選項(方法方法中拿到屬性值)

?? ? */

[類 addObserver:self forKeyPath:@"屬性" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];

[類 removeObserver:self forKeyPath:@"name"];

//移除

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溉卓,一起剝皮案震驚了整個濱河市皮迟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桑寨,老刑警劉巖伏尼,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尉尾,居然都是意外死亡爆阶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門沙咏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辨图,“玉大人,你說我怎么就攤上這事肢藐」屎樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵吆豹,是天一觀的道長忧勿。 經(jīng)常有香客問我,道長瞻讽,這世上最難降的妖魔是什么鸳吸? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮速勇,結(jié)果婚禮上晌砾,老公的妹妹穿的比我還像新娘。我一直安慰自己烦磁,他們只是感情好养匈,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布哼勇。 她就那樣靜靜地躺著,像睡著了一般呕乎。 火紅的嫁衣襯著肌膚如雪积担。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天猬仁,我揣著相機與錄音帝璧,去河邊找鬼。 笑死湿刽,一個胖子當(dāng)著我的面吹牛的烁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诈闺,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渴庆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雅镊?” 一聲冷哼從身側(cè)響起襟雷,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仁烹,沒想到半個月后嗤军,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晃危,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年叙赚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僚饭。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡震叮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳍鸵,到底是詐尸還是另有隱情苇瓣,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布偿乖,位于F島的核電站击罪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贪薪。R本人自食惡果不足惜媳禁,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望画切。 院中可真熱鬧竣稽,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岛宦,卻和暖如春台丛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背砾肺。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工挽霉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人债沮。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像本鸣,于是被迫代替她去往敵國和親疫衩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • KCV 其實由于ObjC的語言特性荣德,你根部不必進(jìn)行任何操作就可以進(jìn)行屬性的動態(tài)讀寫闷煤,這種方式就是Key Value...
    TYM閱讀 1,059評論 0 4
  • KVC KVC是key Value Coding的縮寫,主要方法有setValue:forKey和valueFor...
    小暖風(fēng)閱讀 366評論 0 1
  • 前言: 本文基本不講KVC/KVO的用法涮瞻,只結(jié)合網(wǎng)上的資料說說對這種技術(shù)的理解鲤拿。 由于KVO內(nèi)容較少,而且是以KV...
    土b蘭博王閱讀 3,063評論 0 33
  • 一署咽、KVC 通過關(guān)鍵字近顷,訪問屬性及成員變量。1.kvc當(dāng)調(diào)用setValue:屬性值 forKey:@”name“...
    doudo閱讀 317評論 0 0
  • 1.KVC底層是通過runtime對method和value操作 比如說如下的一行KVC的代碼: [sit set...
    smart_small閱讀 823評論 0 0