Alloc init保留?

时间:2011-09-13 15:16:50

标签: ios objective-c memory-management

任何人都可以解释为什么这行代码的保留计数:

[[[SomeClass alloc] init] retain] 

两个人?我只打电话给保留一次。

3 个答案:

答案 0 :(得分:6)

因为alloc会将保留计数加1。你应该阅读Apple的Memory Management Programming Guide

答案 1 :(得分:6)

保留计数为2,因为[alloc]也会增加保留计数。严格地说,对象的保留计数不仅仅是你称为保留的次数,而是保留了多少东西。

答案 2 :(得分:4)

如果您创建一个对象,使用名称以alloc, new, copy or mutableCopy开头的方法,或者retain一个对象,则其保留计数增加1

如果您releaseautorelease某个对象,它的保留计数会减少1

在您的示例代码中,allocretain都会将保留计数增加1。

有关详细信息,请参阅Apple的文档:

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html