1.xib 的基本使用
- 建立 xib 檔案
- 加載 xib
UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"CarView" owner:nil options:nil] firstObject];
[self.view addSubview:view];
Xib 使用注意事項:
- 如果需要在Xib中添加某個View,隻能在initWithCoder 中添加
- 如果子控件是從 Xib 中建立,是處于未喚醒狀态,此時如果想要在某個子控件中加入View,必須得在 awakeFromNib 添加
Xib 相當于Android 中的一個View的xml布局,比如android中的recycleView 都會加載一個item_layout. 也可以把Xib 當成是stroyBorad的輕量級可視化View
2. KVC 的使用
KVC 相當于 java中的反射,可以修改類的私有成員屬性
Person.m
#import "Person.h"
@implementation Person
{
int _age;
}
- (void)print{
NSLog(@"MyAge is %d",_age);
}
@end
main.m
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] init];
[person setValue:@"88" forKeyPath:@"_age"];
[person print];
}
return NSApplicationMain(argc, argv);
}
3.KVC 字典轉模型
字典轉模型的正規操作:
Person.m:
- (instancetype)initWithDict:(NSDictionary *)dict{
if(self = [super init]){
self.money = [dict[@"money"] floatValue];
self.name = dict[@"name"];
}
return self;
}
+ (instancetype)personWithDict:(NSDictionary *)dict{
return [[self alloc]initWithDict:dict];
}
main.m:
NSDictionary *dict [email protected]{
@"name":@"cailei",
@"money":@1888
};
Person *person = [Person personWithDict:dict];
NSLog(@"%@",person);
上面的字典轉模型方式有個弊端,當你的字典中的屬性非常多的時候,那麼你在 Person 的構造方法中指派語句也會越來越多。 是以可以用下面方式代替指派語句:
[self setValuesForKeysWithDictionary:dict]
- 但是一般不用上述方法,因為上述方法中轉化的必要條件是字典中的key必須在模型中找到。如果模型中帶有模型,也轉化不過來。
4. KVO (Key Value Observer)
KVO 相當于觀察者模式,觀察自身的資料的變化。先”“addObserver”“設定觀察者,然後在observeValueForKeyPath 監聽值的改變