赋值

assign:直接赋值、默认

@interface Car : NSObject
{
    NSString *_name;
}


@property (assign,nonatomic) NSString *name;

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

 

retain :保留对象

@interface Car : NSObject
{
    NSString *_name;
}

@property (retain,nonatomic) NSString *name;


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

 

copy: 拷贝对象

@interface Car : NSObject
{
    NSString *_name;
}


@property (copy,nonatomic) NSString *name;


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

三者的区别

assign:直接赋值,只是一个别名而已
retain:保留的这个对象,两个对象指向了同一个位置
copy:开辟了新的内存空间,分别指向了不同的内存位置,引用技术分别为l,
与之前的对象完全脱离关系。这里我们尤其需要注意,某些时候copy的作用相当于retain。



读写性
readwrite:可读可写、默认

readonly: 只读

原子性
atomic:多线程环境下,存在线程保护

noatomic: 多线程环境下,不存在线程保护

相关文章:

  • 2021-07-22
  • 2021-07-21
  • 2021-12-31
  • 2021-07-16
  • 2022-02-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-08
  • 2021-11-12
  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
相关资源
相似解决方案