在几乎所有的类中,我都使用属性,并且总是使用这样的保留属性:
@property (nonatomic, retain) HomeViewController *homeViewController;
在实现文件中,我实例化这些属性,如下所示:
self.homeViewController = [[HomeViewController alloc]init];
这是我唯一要发布的地方:
- (void)dealloc
{
[homeViewController release];
[super dealloc];
}
我是否正确地认为这里存在内存泄漏 - 因为保留计数实际上是 2。第一个来自属性保留,第二个来自分配调用?
如果是,在这种情况下我应该使用 allocate 吗?
最佳答案
是的,你有泄漏,是的,你的保留计数是 2。
三种解决方案:
self.homeViewController = [[[HomeViewController alloc]init] autorelease];
homeViewController = [[[HomeViewController alloc]init];
UIViewController *temp = [[HomeViewController alloc]init]; self.homeViewController = 临时; [临时发布];
关于iphone - 由于使用保留属性而导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5817982/