1 kvc
key value coding
-(instancetype)initWithDict:(NSDictionary *)dict { self = [super init]; if (self) { // self.answer = dict[@"answer"]; // self.icon = dict[@"icon"]; // self.title = dict[@"title"]; // self.options = dict[@"options"]; // [self setValue:dict[@"answer"] forKeyPath:@"answer"]; // [self setValue:dict[@"icon"] forKeyPath:@"icon"]; // [self setValue:dict[@"title"] forKeyPath:@"title"]; // [self setValue:dict[@"options"] forKeyPath:@"options"]; //kvc [self setValuesForKeysWithDictionary:dict]; } return self; }
2 修改description
相当于toString()
- (NSString *)description { //如果要在开发时,跟踪对象的明细信息,可以重写description方法 //todo:fail return [NSString stringWithFormat:@"<%@: %p> {answer:%@,title:%@,icon:%@,options:%@}",[self class],self,self.answer,self.title,self.icon,self.options]; }
3 添加category类
相当于扩展类的方法 ---》选oc file --》选category
4 getter时候定义的私有变量
@interface QuestionObject() { UIImage *_image; } //_image 只是一个私有变量被image使用赋值并返回 -(UIImage *)image{ if(!_image){ _image = [UIImage imageNamed:self.icon]; } return _image; }
@property (nonatomic,strong,readonly) UIImage *iconImage;//public