Mar*_* R. 5 iphone garbage-collection memory-management objective-c dealloc
假设我有一个名为"foo"的对象,另一个名为"bar"的对象作为属性.
当"foo"解除分配时,它会自动删除对"bar"的所有引用,以便"bar"也可以解除分配吗?或者"foo"deallocate和"bar"漂浮在某个地方的记忆中?即使所有"bar"的引用都在"foo"中定义.
提前致谢.
Bol*_*ock 15
如果foo对象有任何保留或复制(感谢Dave)bar,例如当您将属性声明为以下任何一个时:
@property (nonatomic, retain) NSString *bar;
// Or
@property (nonatomic, copy) NSString *bar;
Run Code Online (Sandbox Code Playgroud)
您需要bar在解除分配时释放foo:
- (void)dealloc
{
[bar release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
在bar你摆脱对它的所有引用之前,系统不会释放你的内存空间(即引用计数降到0),因此你必须自己监视你的引用计数和对象.