任何人都可以解释为什么这行代码的保留计数:
[[[SomeClass alloc] init] retain]
两个人?我只打电话给保留一次。
答案 0 :(得分:6)
因为alloc会将保留计数加1。你应该阅读Apple的Memory Management Programming Guide。
答案 1 :(得分:6)
保留计数为2,因为[alloc]
也会增加保留计数。严格地说,对象的保留计数不仅仅是你称为保留的次数,而是保留了多少东西。
答案 2 :(得分:4)
如果您创建一个对象,使用名称以alloc, new, copy or mutableCopy
开头的方法,或者retain
一个对象,则其保留计数增加1
如果您release
或autorelease
某个对象,它的保留计数会减少1
在您的示例代码中,alloc
和retain
都会将保留计数增加1。
有关详细信息,请参阅Apple的文档: