Tim*_*Tim 1 memory-management objective-c
我想知道,使用以下方法创建对象之间的区别是什么(如果有的话):
NSThing *thing = [[NSThing alloc] initWithObject:object];
VS
NSThing *thing = [[NSThing thingWithObject:object] retain];
内存管理的工作方式有区别吗?此外,什么时候通常的做法是使用一个与另一个?
分配和初始化一个对象稍微有点效率,因为它thingWithObject:会执行一个alloc,然后init,然后autorelease用a计数retain,所以你向自动释放池添加一些东西.第一个选项只涉及a alloc和a init.
就个人而言,alloc当我想要明确对象的生命周期将由我处理时,我使用显式,并且我使用方便方法(thingWithThing:)用于在创建范围之外我不需要的任何对象.
例如,通常首选在循环中显式分配和初始化,因此您不会使自动释放池泛滥.对于需要在运行循环的迭代中存活的对象,我还使用显式alloc+ init而不是thingWithThing:+ retain.