@interface …
@property (原子性,可写性,内存管理) id name;
@end
原子性:    nonatomic, atomic   默认atomic
可写性:    readwrite, readonly  默认readwrite
内存管理: assign, retain, copy  默认assign
 

默认值:

因为这几个属性都有默认值,所以可以任意指定某个属性或者完全不指定:
@property id name; //等价于下一行:
@property (atomic, readwrite, assign) id name;

可写性:

@property id name 会生成两个setter,getter两个访问接口
-(void) setName:(id)name;
-(id) name;
因此readonly说的是只生成getter函数不生成setter函数,默认值说的是两者都生成
 

内存管理:

assign 说的是接口任何时候都不会修改对象引用;
retain 说的是调用setter时会release前一个对象再retain新对象;调用getter时会retain;
copy   说的是调用setter时会copy新对象, release 前一个对象;调用getter时会retain;
 
@property (assign) id name; 等价于
-(void) setName: (id) aName
{
  self.name = aName;
} -(id) name
{
  return self.name;
}
@property (retain) id name; 等价于
-(void) setName: (id) aName
{
  if ([self.name retainCount > ])
  {
    [self.name release];
  }   [aName retain];
  self.name = aName;
} -(id) name
{
  [self.name retain];
  return self.name;
}
@property (copy) id name; 等价于
-(void) setName: (id) aName
{
  if ([self.name retainCount > ])
  {
    [self.name release];
  }   self.name = [copy aName];
} -(id) name
{
  [self.name retain];
  return self.name;

结论:

除了assign属性,使用时必须release对象,否则会内存泄漏!那这样也太麻烦了,感谢ARC

最新文章

  1. SourceTree推送时,增加额外的远程仓库,不用每次都自定义粘贴复制网络
  2. n个人作m幅画
  3. C++学习20 虚基类详解
  4. iOS学习笔记之回调(一)
  5. 深入理解Java内存模型(二)——重排序
  6. linux自动备份文件和数据库并上传到指定的远程FTP中
  7. Spring 报错:Error creating bean with name
  8. What I Have Lived For(我为什么而活着-罗素)
  9. 【百度地图API】如何利用PhoneGap制作地图APP
  10. oracle数据库如何打印九九乘法表
  11. Java设计模式面试题 01 - 六大原则
  12. iOS 远程推送消息解析及逻辑处理
  13. c++第七周学习小结
  14. SSLTLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】解决说明
  15. ysg 一道简单的数论题
  16. CSS| 框模型-定位及相關屬性
  17. 我的grunt学习笔记
  18. RabbitMQ的应用场景以及基本原理介绍(转)
  19. Django之 创建第一个站点
  20. 搭建gitpage博客

热门文章

  1. PL/SQL:使用pragma restrict_references限制包权限
  2. XMPP协议实现原理介绍
  3. Android开发_控制硬加速hardwareAccelerated
  4. 将Java应用注册为后台服务
  5. 使用Git操作GitHub代码入门教程
  6. HDU 5637 Transform
  7. Task类(任务)
  8. PHP-popen() 函数打开进程文件指针
  9. 第二部分 Nhibernate中的类型
  10. Android 输入法键盘和activity页面遮挡问题解决