Alloc init保留?

Jam*_*ter 0 memory-management objective-c ios

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

[[[SomeClass alloc] init] retain] 
Run Code Online (Sandbox Code Playgroud)

是两个?我只打电话给保留一次.

Lio*_*Lio 6

因为alloc会将保留计数加1.您应该阅读Apple的内存管理编程指南.


Jam*_*ter 6

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