• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
yif
专注于C/C++,C#,Objective-C,GIS,空间统计,数据挖掘,智慧城市
博客园    首页    新随笔    联系   管理    订阅  订阅
Objective-C:@property参数详解

格式:@property(param1, param2) 类型 属性名

参数可有可无

三类参数:

  • 1.读写属性:readwrite/readonly

  readwrite:产生setter\getter

  readonly:只产生简单的getter,没有setter

  • 2.setter处理:assign/retain/copy

  assign:默认类型,setter方法直接赋值,不进行retain操作

  retain:表示先release原来的值,再retain新的值;

  copy:先release原来的值,再copy新值;

  • 3.原子性:atomic/nonatomic

  atomic:默认类型,提供多线程安全。在多线程环境下原子操作是必要的,否则有可能引起错误结果;

    加了atomic,setter/getter是一个原子操作。如果有多个县城同时调用setter的话,不会出现某一个线程执行setter全部语句之前,另一个线程开始执行setter的  情况,相当于给方法加了锁。

  nonatomic:禁止多线程提供变量保护,提高性能;

    atomic是OC使用的一种线程保护技术,防止在写入未完成的时候被另一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备  上,如果没有使用多线程间的通信编程,那么nonatomic是一个非常好的选择,另外,由于其不涉及锁的操作,执行速度也相对快点。

posted on 2015-12-24 15:18  mattran  阅读(264)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3