OC 第八章 二 KVC

2021-07-08 18:15:44 字數 1502 閱讀 8678

//                      第八章(二) kvc

//kvc key-value-coding 鍵值編碼 間接訪問例項變數

//kvo key-value-observer 鍵值觀察者 觀察某個例項變數是否發生變化

//key:鍵,⽤用於標識例項變數

//vlaue:例項變數對應的值

person *per = [[person alloc]init];

per.name = @"志玲";

[per setvalue:@"志玲" forkey:@"_name"];

nslog(@"%@",per.name);

nslog(@"%@",[per valueforkey:@"_name"]);

//不給_number新增setter getter方法; 甚至_number是private 都能給它賦值

// 所以一般不會讓別人知道有什麼變數

[per setvalue:@"12" forkey:@"_number"];

[per printfnumber];

[per setvalue:@"lol" forkey:@"_hobby"];

[per printfnumber];

nslog(@"%@",[per valueforkey:@"_number"]);

telephone *phone = [[telephone alloc]init];

per.phone = phone;

per.phone

.phonenumber = @(13954638766);

nslog(@"%@",per.phone

.phonenumber);

//通過kvc訪問屬性的屬性, 通過路徑訪問

[per setvalue:@"iphone" forkeypath:@"_phone._brand"];

nslog(@"%@", per.phone

.brand);

nslog(@"%@", [per valueforkeypath:@"_phone._brand"]);

//利用字典給物件的屬性賦值

nsdictionary *dic = @;

telephone *pho = [[telephone alloc]init];

[pho setvaluesforkeyswithdictionary:dic];

nslog(@"%@ %@",pho.brand, pho.phonenumber);

//對於不存在物件的屬性 會自動呼叫setvalue:forundefinedkey:

// 系統預設實現是丟擲⼀個異常; 因此需要在.m檔案實現方法:

//利用kvc給本類物件賦值時,如果沒有與key對應的例項變數的話, 系統會自動呼叫方法

-(void)setvalue:(id)value forundefinedkey:(nsstring *)key

}

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...

第八章 字典

d 空字典 d 這就是字典 d dict.fromkeys a b d dict zip keyslist,valslist d dict name bob age 22 建立字典的函式 d name 通過索引key獲取對應的value d.keys 返回d字典物件所有key,返回乙個列表 d.va...