運行循環(huán)(runLoop) —自動釋放池丶滾動視圖丶(NSTimer)
>全稱是Key-Value coding即是鍵值編碼笨觅,它提供了一種使用字符串而不是訪問對象中的set方法去訪問一個對象屬性的機制;
> KVC是OC語言動態(tài)運行時機制(runTime)的一種體現(xiàn)缠沈,任何NSObject類型的對象都支持KVC摩渺;
>常用核心方法:
//通過key(成員變量的名稱)
設(shè)置value(成員變量的值)
- (void)setValue:(id)valueforKey:(NSString*)key;
//通過key(成員變量的名稱)獲取value(成員變量的值)
- (id)valueForKey:(NSString*)key;
//通過鍵值對的形式給成員變量賦值
- (void)setValuesForKeysWithDictionary:(NSDictionary*)keyedValues;
//通過此方法防止出現(xiàn)未定義的key(成員變量的名稱)的時候出現(xiàn)崩潰
//一般情況下简烤,使用KVC操作,推薦將方法重寫R』谩:嵴臁!(防止有及個別數(shù)據(jù)绰姻,是有其他字段)
- (void)setValue:(id)valueforUndefinedKey:(NSString*)key;
特殊字符處理:
@property(nonatomic,strong)NSString*description;
@property(nonatomic,strong)NSString*id;
方式一:
//重寫setvalue:forkey:方法
- (void)setValue:(id)valueforKey:(NSString*)key{
if([keyisEqual:@"description"]) {
//原本description屬性的改為desc
_desc = value;
}else{
[supersetValue:valueforKeyPath:key];
}
}
方式二:
//重寫setvalue:forUndefinedkey:方法
//另外一個好處枉侧,防止程序崩潰(某些字典中會多出一個值等問題)
- (void)setValue:(id)valueforUndefinedKey:(NSString*)key{
}
//在創(chuàng)建模型對象的時候,手動賦值
DataModel *model =
[[DataModel alloc] init];
//原本為description屬性改為desc
model.desc =
dict[@“description”];