iPhone开发--过度release一个对象会怎么样
来源:互联网 发布:数据库规划方案 编辑:程序博客网 时间:2024/04/26 04:06
刚才看了斯坦福大学的iPhone开发公开课的第三讲,结尾部分,指导老师运行了个retainCount的例子,这个例子让我联想到之前release过度而导致的crash问题(release写多了,蛋当时并未提示我错误,运行过去之后,在某个时间在main中crash了)。
我照着斯坦福老师敲的代码如下:
NSString *test = [NSMutableString stringWithString:@"test retain count"]; NSLog(@"first test count is %d", [test retainCount]); [test retain]; NSLog(@"second test count is %d", [test retainCount]); [test release]; NSLog(@"third test count is %d", [test retainCount]); [test release]; NSLog(@"four test count is %d", [test retainCount]); NSLog(@"still alive");
运行结果如下:
2012-02-29 22:51:41.217 test[14296:1203] first test count is 12012-02-29 22:51:41.219 test[14296:1203] second test count is 22012-02-29 22:51:41.219 test[14296:1203] third test count is 12012-02-29 22:51:41.219 test[14296:1203] four test count is -12012-02-29 22:51:41.220 test[14296:1203] still alive
sharedlibrary apply-load-rules all
(gdb)
之前还有过多release 手动alloc的button的时候,同样也遇到过这类问题,原因是button被addSubView等的时候,本身的retainCount被自动增加,我们release的时候并没有马上crash,当系统自动增加的retainCount都被释放的时候,再释放咱们多余的release的时候就会crash了。
个人的一点浅薄见解,如有不正确的地方,请大虾指教。
- iPhone开发--过度release一个对象会怎么样
- 过度release会产生的问题
- IOS开发:当过度释放一个对象时
- 怎么样剪切一个对象
- release对象过度使用,造成野指针错误
- Iphone开发(5) retain,release,retainCount,dealloc
- 如果在回调函数中释放对象,会怎么样?
- 黑莓开发:怎么样制作一个弹出框
- 黑莓开发:怎么样制作一个TreeField
- iphone视图之间的过度
- iphone视图之间的过度
- iPhone开发过程中检测多次Release问题
- iPhone开发过程中检测多次Release问题
- iPhone开发过程中检测多次Release问题
- iPhone开发过程中检测多次Release问题
- iPhone开发过程中检测多次Release问题[转]
- 三个月以后会怎么样?
- 新建和之前保存的相同关键字对象,之前的对象会怎么样?
- Android之GridView
- 内核链表
- nginx源码分析—信号初始化
- Ubuntu10.10 Fedora14 root权限破解
- 设计模式:单例模式
- iPhone开发--过度release一个对象会怎么样
- linux中查看java进程
- 静态库包含静态库
- 用source insight 看python源代码
- FFmpeg快速入门
- 虚拟机网口与本机网口不通的问题
- 实现跨域iframe自适应高宽的方案
- 嵌入式c语言新手起步《const volatile关键字的认识》
- Data Movement of Cloudy