我对Apple材料感到困惑。
我们通过3种方式管理内存:
我怀疑自动引用计数和手动依据计数之间有什么区别。
有人可以解释一下吗?
答案 0 :(得分:14)
在ARC中,您不必释放/自动释放由您分配的内存,因为在手动情况下您必须处理此问题。 例如手册
-(void)someMethod
{
NSMutableArray *arr = [[NSMutableArray alloc] init];
//use array
[arr release]; //when array is in no use
}
ARC案例
-(void)someMethod
{
NSMutableArray *arr = [[NSMutableArray alloc] init];
//use array
}
答案 1 :(得分:3)
在ARC中,操作系统负责内存管理,因此您不必担心释放对象。这对初学者来说非常简洁。在手动计数中,您必须跟踪释放内存,如果您没有正确操作,最终会导致应用程序崩溃。 ARC和MRC在ios中可用,因为垃圾收集仅限于MAC-OSX,希望这会有所帮助。 Inder给出了一个很好的例子。
答案 2 :(得分:0)
在MRC中,您负责跟踪并确保正确地增加,减小和释放对象的所有引用。在Obj-C中,您基本上有一组规则来帮助您避免出现任何内存泄漏或指针悬空的情况,并且付出了巨大的努力来确保一切工作正常,并且可以通过某些方法(例如某些方法)来自动化其他语言习惯。
这就是ARC进入游戏的时候。
ARC是MRC运作方式的重要替代方案。使用ARC时,在没有强引用的情况下会释放实例,并且每个实例都会跟踪保留给自己的强引用和弱引用/无人引用的数量。尽管它看起来像是类似的行为,但是在两种情况下使用的工作量差异很大,在MRC中,您必须跟踪所有情况,而在ARC中,唯一要做的就是避免保留周期。
ARC和垃圾收集器之间的一些区别是:
如果您想查看更多信息,我发现本文非常有帮助:https://swift007blog.wordpress.com/2017/01/14/what-is-arc-in-ios/
答案 3 :(得分:0)