運行循環(runLoop) —自動釋放池丶滾動視圖丶(NSTimer)
>全稱是Key-Value coding即是鍵值編碼,它提供了一種使用字符串而不是訪問對象中的set方法去訪問一個對象屬性的機制;
> KVC是OC語言動態運行時機制(runTime)的一種體現,任何NSObject類型的對象都支持KVC;
>常用核心方法:
//通過key(成員變量的名稱)
設置value(成員變量的值)
- (void)setValue:(id)valueforKey:(NSString*)key;
//通過key(成員變量的名稱)獲取value(成員變量的值)
- (id)valueForKey:(NSString*)key;
//通過鍵值對的形式給成員變量賦值
- (void)setValuesForKeysWithDictionary:(NSDictionary*)keyedValues;
//通過此方法防止出現未定義的key(成員變量的名稱)的時候出現崩潰
//一般情況下,使用KVC操作,推薦將方法重寫!!!(防止有及個別數據,是有其他字段)
- (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{
}
//在創建模型對象的時候,手動賦值
DataModel *model =
[[DataModel alloc] init];
//原本為description屬性改為desc
model.desc =
dict[@“description”];