Objective-C中的内存管理

SVA*_*SVA 2 memory-management objective-c

#import <Foundation/Foundation.h>

int main (int argc, char const *argv[])
{
    SampClass *obj=[[SampClass alloc] init];
    [obj release];
    NSLog(@"%i", [obj retainCount]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这应该为retainCount为1,当它应为0时

bbu*_*bum 9

不要打电话retainCount.

甚至没有调试代码.特别是当你试图了解Cocoa的内存管理是如何工作的时候.

对象的绝对保留计数不是您控制的.通常,价值将是非常意外的.可能有任意数量的缓存,静态分配(如常量NSStrings),或框架内的其他内部实现细节,使对象的保留计数不是您期望的.

应该完全根据增量来考虑对象的保留计数.如果导致保留计数增加,则必须将其减少到某个位置(如果要取消分配对象).期.故事结局.

试图以绝对值来考虑保留计数只会导致混乱和浪费时间.

" 可可内存管理指南"很好地解释了这一点.