OC

Objective-C中的属性修饰符

2019-07-29  本文已影响0人  JCYDSHANKS

线程安全:atomic/nonatomic

在object-c中,生命属性时经常出现两个修饰符atomic和nonatomic,当不设置时默认时atomic。
系统会自动为这两个关键字修饰的属性初始化setter/getter方法。他们的区别在于

要注意的是

从代码实现上来看他们之间的区别

nonatomic

@synthesize value = _value;

//set
-(void)setValue:(int)value
{
    if(_value != value)
    {
        _value = value;
    }
}
//get
-(int)value
{
    return _value;
}

atomic

@synthesize value = _value;

//set
-(void)setValue:(int)value
{
    //同步代码块
    @synchronized (self) {
        
        if(_value != value)
        {
            _value = value;
        }
    }
}
//get
-(int)value
{
    int val = 0;  // 一般不用基础数据类型 默认为nil,在这里用int只是一个示范
    //同步代码块
    @synchronized (self) {
        val = value
    }
    return val;
}

访问权限:readonly/readwrite

内存管理(ARC):assign/weak/strong/copy

内存管理(MRC):assign/retain/copy/unsafe_unretained

指定访问器方法:getter=/setter=

nonnull,nullable和null_resetable

为了对应swift的可选类型,object-c中增加了对应的修饰符。

上一篇 下一篇

猜你喜欢

热点阅读