在几乎所有的类中,我都使用属性,并且我总是使用以下保留属性:

@property (nonatomic, retain) HomeViewController *homeViewController;


在实现文件中,我将实例化这些属性,如下所示:

self.homeViewController = [[HomeViewController alloc]init];


这是我要释放的唯一地方:

- (void)dealloc
{
    [homeViewController release];
    [super dealloc];
}


我是否认为自己在这里发生内存泄漏是正确的-因为保留计数实际上是2。第一个来自属性keep,第二个来自alloc调用?

如果是,在这种情况下我应该使用分配吗?

最佳答案

是的,您有漏洞,是的,保留数为2。

三种解决方案:


self.homeViewController = [[[HomeViewController alloc]init] autorelease];
homeViewController = [[[HomeViewController alloc]init];
UIViewController *temp = [[HomeViewController alloc]init]; self.homeViewController = temp; [temp release];

关于iphone - 由于使用保留属性而导致的内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5817982/

10-08 20:59