由于使用保留属性导致内存泄漏

The*_*ner 2 iphone memory-leaks memory-management objective-c

在我的几乎所有类中,我都使用属性,并且我总是使用这样的retain属性:

@property (nonatomic, retain) HomeViewController *homeViewController;
Run Code Online (Sandbox Code Playgroud)

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

self.homeViewController = [[HomeViewController alloc]init];
Run Code Online (Sandbox Code Playgroud)

这是我发布的唯一地方:

- (void)dealloc
{
    [homeViewController release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我是否相信我在这里有内存泄漏 - 因为保留计数实际上是2.第一个来自属性保留,第二个来自alloc调用?

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

jv4*_*v42 6

是的,你有泄漏,是的,你的保留计数是2.

三种解决方案

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