内存管理的基本问题
2015-07-31 08:52
351 查看
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person * p = [[Person alloc] init]; NSLog(@"%lu",p.retainCount); // retain :retainCount + 1,返回 self [p retain]; NSLog(@"%lu",p.retainCount); // release: retainCount - 1 [p release]; // 1 NSLog(@"%lu",p.retainCount); //[p release]; // retainCount = 0 的时候 会调用 dealloc 方法销毁对象 // EXC_BAD_ACCESS 系统访问了内存中不可访问的空间 // OC 中默认不进行实时监测 NSLog(@"%lu",p.retainCount); /* 那为什么在这个对象被回收之后,这个不确定的值是1而不是0呢?这是因为当最后一次执行release时,系统知道马上就要回收内存了,就没有必要再将retainCount减1了,因为不管减不减1,该对象都肯定会被回收,而对象被回收后,它的所有的内存区域,包括retainCount值也变得没有意义。不将这个值从1变成0,可以减少一次内存操作,加速对象的回收。*/ } return 0; }
#import <Foundation/Foundation.h> @interface Person : NSObject @end
#import "Person.h"
@implementation Person
- (void)dealloc {
[super
dealloc];
NSLog(@"Person
被销毁了");
}
@end
相关文章推荐
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- java简单选择排序
- 简单myshell的实现
- UITextField
- UIButton 学习笔记
- 支持高并发的IIS Web服务器常用设置
- 计算机视觉领域协会、出版社及相关高水平期刊、会议
- redhat下本地yum源配置
- Catch That Cow(POJ--
- Word Search
- UVA - 11400 Lighting System Design
- iBatis开发详解(10)---------------操作DDL和映射继承
- ABP之动态WebAPI(一)
- VK Cup 2015 - Finals, online mirror F. Clique in the Divisibility Graph 数论
- 2016 数据的交换输出
- nginx+tomcat集群
- 用于dbnull的数据转换。因为用convert.to无法转换dbnull类型
- jQuery图片翻转弹出动画特效
- 笔试面试
- 第7章 性能和可靠性模式 Failover Cluster(故障转移群集)