为什么这段代码会产生内存泄漏?

发布于 2024-08-21 04:39:51 字数 497 浏览 9 评论 0原文

Xcode 中的 Leaks Instrument 向我显示了内存泄漏。我已经评论了 Leaks 所抱怨的受影响的线路。但我在内存管理中没有看到错误...

- (void)setupViewController {
    MyViewController *myVC = [[MyViewController alloc] init];

    UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
    myVC.tabBarItem = tbi; // LEAK: 128 bytes

    self.myViewController = myVC;

    [myVC release];
    [tbi release];
}

我的意思是... tbi 和 myVC 最后被释放,并且 alloc 是平衡的。那么出了什么问题呢?我不明白。

The Leaks Instrument in Xcode shows me an memory leak here. I have commented the affected line which Leaks is complaining about. But I see no error in my memory management...

- (void)setupViewController {
    MyViewController *myVC = [[MyViewController alloc] init];

    UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
    myVC.tabBarItem = tbi; // LEAK: 128 bytes

    self.myViewController = myVC;

    [myVC release];
    [tbi release];
}

I mean... tbi and myVC IS released at the end, and the alloc IS balanced. So what's wrong? I don't get it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空气里的味道 2024-08-28 04:39:51

如果 MyVc.tabBarItem 已设置,则它指向的任何内容都可能无法正确释放,从而导致泄漏。

if MyVc.tabBarItem is already set, whatever it's pointing at may not be deallocated properly, causing a leak.

冷情 2024-08-28 04:39:51

它只是表明以下至少一项陈述是正确的:

  1. 仪器并不完美,有时会在不存在泄漏的情况下显示泄漏(反之亦然)。
  2. Apple 的代码并非没有错误。

事实上,两者都是正确的。

It just goes to show that at least one of the following statements is true:

  1. Instruments is not perfect and sometimes shows leaks where there aren't any (and vice versa).
  2. Apple's code is not bug-free.

In fact, both are true.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文