iOS无限创建对象的内存问题(ARC下)

循环创建

在上图中的三种创建,通过XCode我们可以知道,只有方式二创建label时内存会无限增加直至崩溃!为什么会出现以上情况?

首先:UIImage和NSString都是继承NSObject,NSObject是一切类的基类,[[UIImage alloc] init]执行时调用[super init]就是NSObject的init方法,因为NSObject是基类,所以无法再调用[super init],所以不会重新分配内存!而UILabel 是继承自UIView的,[super init]则会无限分配内存!

其次:你有可能会说自动释放的问题!自动释放?好的,自动释放是在什么情况下自动释放的?在NSRunLoop监测到该对象已经用完了就会告诉释放池去释放掉,但是你的循环都走不完,NSRunLoop再怎么牛逼我也没办法监测到你用完了吧!所以这种死循环你的runloop是没办法帮你的.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容