关于ios内存管理。在开发过程中,内存管理很重要,我简单说明一下。

1.正确用法

UIView *v = [[UIView alloc] init]; //分配后引用计数为1

[self.view addSubview:v];  //这儿引用计数加1,为2

[v release];  //这儿引用计数为1

最后系统在回收self.view的时候,会先回收其subView,所以v会被自动回收

2.如果v是类的成员变量,写了如下代码,不需要再在类的dealloc方法里[v release];

v = [[UIView alloc] init];

[self.view addSubview:v];

[v release];

如果在dealloc里调用了release,那么就多release了,会crash.

3.如果v是类的属性,分两种情况

a. @property (nonatomic, assign) UIView *v;  这儿是assign, 然后分配内存的时候如果是这样

v = [[UIView alloc] init];

[self.view addSubview:v];

[v release];或是这样用

v = [[UIView alloc] init];

[self.view addSubview:v];

[v release];

都不需要在dealloc里[v release];

b.@property (nonatomic, retain) UIView *v; 或 @property (nonatomic, copy) UIView *v;声明的属性,那么这样分配内存

v = [[UIView alloc] init];

[self.view addSubview:v];

[v release];这样与a是一样情况,不需要在dealloc里释放。但如果是

self.v = [[UIView alloc] init];

[self.view addSubview:v];

[v release];加了个self,那么就要在dealloc里[v release];

最新文章

  1. 关于调整input里面的输入光标大小
  2. SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
  3. c语言多线程队列读写
  4. Loadrunner中web_reg_save_param的使用详解
  5. C++内存泄露调试
  6. SCU 4436 Easy Math 2015年四川省赛题
  7. sql从某不连续的数字中将其分段并找出缺失的数字并分段
  8. Node.js与MongoDB的基本连接示例
  9. HTML特殊符号、常用字符实体
  10. U盘重装Win10系统视频教程
  11. lambda+mutable配合move实现单函数多程序域
  12. mint17上建立lamp环境
  13. [物理学与PDEs]第2章习题5 正应力的平均值
  14. Python学习笔记五
  15. 一个电脑的重装到java开发环境安装配置的全过程
  16. html 空白汉字占位符 
  17. Codeforces 955C Sad powers (数论)
  18. golang的sort研究
  19. sql server自增列值的获取
  20. javascript--给你的JS代码添加单元测试

热门文章

  1. SQLite剖析之数据类型
  2. thinkphp where条件语句整理
  3. logback 配置详解
  4. 【USACO 2.3】The Longest Prefix
  5. C语言拾遗(一)
  6. JavaScript学习1
  7. 如何实现CDN的ns智能解析和动手验证Akamai的实现
  8. Git 学习笔记参考
  9. javascript 高级程序设计 -有感
  10. 解决在ScrollView中套用ListView显示不正常