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

标签 iphone objective-c memory-management memory-leaks

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

@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/

相关文章:

iphone - 视网膜设备的应用程序图标

iphone - Xcode 5、iOS7 和 64 位与 32 位

objective-c - 如何应对点击速度过快的用户

ios - 在 IOS 中从 google map place api 中提取需要信息

c - 如果这是堆溢出导致我的程序崩溃,我应该如何正确处理内存分配?

ios - 从数据库中获取数据是否会影响iOS开发中应用程序的速度

ios - 尝试在我的个人 iPhone 上模拟我的 Xcode 项目

objective-c - Objective C 按类创建对象

Xcode 仪器。虚拟内存是什么意思? iPhone OS 没有虚拟机?

c - 如何从另一个函数释放一个函数动态分配的内存?