1.@property中的copy的作用

  • 防止外界修改内部的值
    @interface Person : NSObject
@property (nonatomic, retain) NSString *name;
@end
    NSMutableString *str = [NSMutableString stringWithFormat:@"lnj"];

    Person *p = [[Person alloc] init];
p.name = str;
// person中的属性会被修改
[str appendString:@" cool"];
NSLog(@"name = %@", p.name);
  • 防止访问对象对象已经释放

    不用copy情况

Person *p = [[Person alloc] init];
p.name = @"lnj";
Dog *d = [[Dog alloc] init];
d.age = 10;
NSLog(@"retainCount = %lu", [d retainCount]); // 1
p.pBlock = ^{
// 报错, 调用之前就销毁了
NSLog(@"age = %d", d.age);
};
[d release]; // 0
p.pBlock();
[p release];

    用copy情况

    Person *p = [[Person alloc] init];
p.name = @"lnj";
Dog *d = [[Dog alloc] init];
d.age = 10;
NSLog(@"retainCount = %lu", [d retainCount]); // 1
p.pBlock = ^{
// 会对使用到的外界对象进行一次retain
NSLog(@"age = %d", d.age);
NSLog(@"retainCount = %lu", [d retainCount]); // 1
};
[d release]; // 1
p.pBlock();
[p release];

2.@property内存管理策略选择

  • 非ARC

    • 1> copy : 只用于NSString\block
    • 2> retain : 除NSString\block以外的OC对象
    • 3> assign :基本数据类型、枚举、结构体(非OC对象),当2个对象相互引用,一端用retain,一端用assign
  • ARC

    • 1> copy : 只用于NSString\block
    • 2> strong : 除NSString\block以外的OC对象
    • 3> weak : 当2个对象相互引用,一端用strong,一端用weak
    • 4> assgin : 基本数据类型、枚举、结构体(非OC对象)

最新文章

  1. 动画的使用—View Animation
  2. 学习之js绑定事件
  3. JAVA中抽象类的一些总结
  4. ToolBar存档
  5. linux中压缩与解压缩命令小结
  6. sublime2 Ctags 快捷键
  7. mysql其他函数
  8. [转]python对json的相关操作
  9. SharePoint各版本信息
  10. 工作经常使用的SQL整理
  11. html、js简单实现含中文csv文件下载(后端为django)
  12. Python [目录]
  13. .Net Core从命令行读取配置文件
  14. etcd 启动错误
  15. Linux上VsCode编译打包运行
  16. java / android int类型如何判空?
  17. 002.DNS-BIND简介
  18. php如何判断IP为有效IP地址
  19. 转:tomcat安全设置
  20. 二维码Data Matrix的解码实现(zxing-cpp)

热门文章

  1. C++基础之参数重载
  2. <数据结构>XDOJ314.完全二叉树的子树
  3. 使用 DML语句,对 “锦图网” 数据进行操作,连接查询(内连接,左外连接,右外连接,全连接)
  4. JS运行三部曲(预编译)
  5. hadoop 之 常用基本操作
  6. Nginx_配置文件nginx.conf配置详解
  7. Python_上下文管理器
  8. JQuery iframe 刷新效果
  9. 基于rabbitmq延迟插件实现分布式延迟任务
  10. LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]