1.对属性概念进行了解,在创建属性的时候需要进行分析。
@interface ViewController ()
@property NSString *name;
@property NSString *message;
@end
相当于:
@interface ViewController ()
-(NSString *)name;
-(void)setName:(NSString *)name;
-(NSString *)message;
-(void)setMessage:(NSString *)message;
@end
(1)属性特质:
①原子性:nonatomic(非原子性),atomic(原子性);
②读写权限:只读(readonly),可读可写(readwrite);
③内存管理:纯量类型(assign,unsafe_unretained),拥有关系(strong),非拥有关系(weak),copy(不保留新值只拷贝)
@interface ViewController ()
@property (nonatomic, readwrite, strong) UIView *view;
@end
(2)注意:
①可以用@prooerty进行属性定义。
②通过特质进行语义的正确定义。
③开发iOS时,应该使用nonatomic属性。atomic性能会有影响。
2.对象内部尽量直接访问实例对象
(1)对象内部调用,在读取变量的时候使用直接访问的形式(self.name)。在设置变量的时候使用属性来做(_name = name)。
(2)在初始化,dealloc方法中,实例变量来读取数据。
(3)惰性初始化情况下,需要通过属性进行读取数据。( _name = name )
3.对象的等同性
(1)检查对象的等同性需要提供isEqual 和 hash方法。
(2)相同的对象哈希码相同。但哈希码相同的对象,不一定等同。
(3)具体制定监测方案,以及哈希码碰撞的几率。
4.“类族模式” 影藏实现细节
(1)判断NSArray实例和NSMutableArray是否等同:
id mtuarray = [NSMutableArray class];
if([mtuarray isKindOfClass:[NSArray class]])
{
NSLog(@"mtuarray是NAString第一种~~~");
}
(2)子类应该继承自类族中的抽象基类。
(3)子类应该定义自己的数据存储方式。
(4)子类应该覆写超类文档中应该覆写的方法。