Objective-C高级编程:iOS内存管理和引用计数

1.自动引用计数
在NSObject类的alloc类方法上设置断点,追踪程序的执行。以下列出执行所调用的方法和函数。
+alloc;
+allocWithZone;
class_createInstance;
calloc
各个方法都通过同一个调用_CFDoExternRefOperation函数,调用了一系列名称相似的函数。苹果的实现大概就是采用离散列表(引用计数表)来管理引用计数

屏幕快照 2017-02-05 下午3.27.38.png

通过引用计数表管理引用计数的好处
1.对象用内存块的分配无需考虑内存块头部
2.引用计数表各记录存有内存块地址,可从各个记录追溯到各对象的内存块,方便检查内存泄漏

2.autorelease

NSRunloop每次循环过程中NSAutoreleasePool对象被生成或废弃

NSAutoreleasePool *pool  =  [ [NSAutoreleasePool alloc]init];
id obj  =  [ [NSObject alloc]  init];
[obj autorelease];
[pool drain]

autorelease 实例方法的本质就是调用NSAutoreleasePool对象的addObject类方法

[NSAutoreleasePool showPools];
会将现在的NSAutoreleasePool的状况输出到控制台

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容