Ces*_*scy 8 pointers objective-c automatic-ref-counting
我的理解是:
当内存未被释放或"释放"时发生内存泄漏当指针未设置为nil且对象被释放时,会发生悬空指针.
我的问题是:可以将对象设置为nil释放内存并清除指针引用吗?
即
Car *myCar = [[Car alloc] initWithCoolRims: YES];
myCar = nil;
//no mem leaks or dang pointers
Run Code Online (Sandbox Code Playgroud)
或ARC是否这样做:
Car *myCar = [[Car alloc] initWithCoolRims: YES];
[myCar release];
myCar = nil;
//no mem leaks or dang pointers
Run Code Online (Sandbox Code Playgroud)
谢谢
Pau*_*l.s 10
在ARC下
对于您的第一个示例myCar将设置为nil,并且新创建的Car将在某个时候取消分配.这是因为myCar唯一能引用新创建的东西Car.
如果别的东西产生了浓厚的指针到新创建Car那么这只会nil出myCar的参考和其他有兴趣的引用将确定的寿命Car实例
在非ARC下
人们还是这样吗?
你的第一个例子确实是内存泄漏 - 你已经丢失了指向你的新Car实例的唯一指针而没有从中减少+1引用alloc.