美文网首页
关键字(@property属性)(I)

关键字(@property属性)(I)

作者: Harely | 来源:发表于2019-10-20 10:32 被阅读0次

nonatomic和atomic

  • nonatomic:不使用同步锁,非原子性
  • atomic:使用同步锁,原子性

属性声明为atomic时,在该属性在调用getter和setter方法时,会加上同步锁(也叫互斥锁@synchronized)。
即在属性在调用getter和setter方法时,保证同一时刻只能有一个线程调用属性的读/写方法。保证了读和写的过程是可靠的。
但并不能保证数据一定是可靠的。

理由如下图:


数据不可靠

retain

  retain到另外一个对象之后,地址是不会变化的,地址也为0x1111,实质上是建立一个指针,也就是指针拷贝,内容也是相同的,retain值会加1。

- (void)setName:(NSString *)name{
    if (_name != name) {
        [ _name release];
        _name = [name retain];
    }
}
- (NSString *)name{
    return [[ _name retain] autorelease];
}

copy

  copy建立一个相同的对象,如果一个NSString对象,假如地址为0x1111,内容为@"hello",通过Copy到另一个对象之后,地址为0x2322,内容也相同,而新的对象retain为1,旧的对象是不会发生变化。

内部实现

- (void)setName:(NSString *)name{
    if (_name != name) {
        [ _name release];
        _name = [name copy];
    }
}
- (NSString *)name{
    return [[ _name retain] autorelease];
}

assign

内部实现

- (void)setName:(NSString *)name{
    _name = name;
}


- (NSString *)name{
    return _name;
}

weak

weak 实现原理

野指针,僵尸对象,空指针详解

相关文章

  • 关键字(@property属性)(I)

    nonatomic和atomic nonatomic:不使用同步锁,非原子性 atomic:使用同步锁,原子性 属...

  • iOS开发---属性关键字详解

    iOS开发—属性关键字详解 @Property 什么是属性? 属性(property)是Objective-C的一...

  • 2017年iOS面试题 总结 含答案(一)

    1、@property中有哪些属性关键字? 答:@property中我们经常使用的关键字有strong,weak,...

  • 深入浅出Objective-C笔记(十一)

    属性 (Property) 不使用属性的情况 使用属性的情况   在使用property这个关键字声明一条属性的时...

  • iOS 属性

    1.@property 属性 在我们声明property这个关键字的时候例如: @property (nonato...

  • Vickate_iOS Checklist

    [※]@property中有哪些属性关键字? 原子属性 atomic 和 nonatomic...

  • 18.@property中有哪些属性关键字?/ @propert

    @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? 属性可以拥有的特质分为四类:...

  • 临时仓库

    @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? nonatomic atom...

  • OC面试CheckList

    @property中有哪些属性关键字? @property和@synthesize是成对出现的,可以自动生成某个类...

  • 面试题

    1.@property 后面可以有哪些修饰符?/@property中有哪些属性关键字?属性可以拥有的特质分为四类:...

网友评论

      本文标题:关键字(@property属性)(I)

      本文链接:https://www.haomeiwen.com/subject/qyvomctx.html