编写OC代码时注意事项:对象,消息,运行周期

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)子类应该覆写超类文档中应该覆写的方法。

猜你喜欢

转载自blog.csdn.net/weixin_42357849/article/details/122132947