Arc*_*676 0 memory-management objective-c automatic-ref-counting
我读到在Xcode中使用ARC进行Objective-C编程时,dealloc编译器会自动调用该方法.在什么情况下它被称为?
为了避免使用太多的变量名,当我需要重复使用相同的类来执行多个操作(并且每次都重置变量)时,我经常声明变量,将它们设置为nil,然后在我去的时候为它们赋值.最终看起来像这样:
MyClass mc;
mc = [[MyClass alloc] init];
[mc doThis:someOption]
mc = [[MyClass alloc] init];
[mc doThis:someOtherOption];
//etc...
Run Code Online (Sandbox Code Playgroud)
方法名称alloc是"allocate"的缩写,因为它是将内存分配给变量的方法.sc每次为其分配新值时,编译器是否会自动释放内存?我计划在我的一个项目中使用这个方法,并且我不希望在我调用的所有时间分配大量内存alloc来分配新值mc.
编译器从不调用dealloc.编译器插入retain,release并autorelease在必要时(更高效的等同物,真的)遵循内存管理规则.
当编译器插入所述调用由编译器决定时,细节将在不同的编译器版本和不同的优化级别之间发生变化.
也就是说,你一般不需要担心它.
然而,自动释放压力可能仍然是一个问题,因为可以保留周期.因此,您绝对应该使用Allocations Instrument来调整您的应用程序以测量高水位线,并确保您的应用程序不会随着时间的推移而泄漏内存.