Dealloc和ARC

 蓝客杂货 发布于 2023-02-02 20:11

我读到在Xcode中使用ARC进行Objective-C编程时,dealloc编译器会自动调用该方法.在什么情况下它被称为?

为了避免使用太多的变量名,当我需要重复使用相同的类来执行多个操作(并且每次都重置变量)时,我经常声明变量,将它们设置为nil,然后在我去的时候为它们赋值.最终看起来像这样:

MyClass mc;

mc = [[MyClass alloc] init];
[mc doThis:someOption]

mc = [[MyClass alloc] init];
[mc doThis:someOtherOption];

//etc...

方法名称alloc是"allocate"的缩写,因为它是将内存分配给变量的方法.sc每次为其分配新值时,编译器是否会自动释放内存?我计划在我的一个项目中使用这个方法,并且我不希望在我调用的所有时间分配大量内存alloc来分配新值mc.

1 个回答
  • 编译器从不调用dealloc.编译器插入retain,releaseautorelease在必要时(更高效的等同物,真的)遵循内存管理规则.

    当编译器插入所述调用由编译器决定时,细节将在不同的编译器版本和不同的优化级别之间发生变化.

    也就是说,你一般不需要担心它.

    然而,自动释放压力可能仍然是一个问题,因为可以保留周期.因此,您绝对应该使用Allocations Instrument来调整您的应用程序以测量高水位线,并确保您的应用程序不会随着时间的推移而泄漏内存.

    2023-02-02 20:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有