【问题标题】:why does this code leak? (iphone)为什么这段代码会泄漏? (苹果手机)
【发布时间】:2011-02-20 13:45:52
【问题描述】:

这是标题:

@interface ForumBrowserAppDelegate : NSObject <UIApplicationDelegate> {
 ForumSelection *forumSelection;
UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ForumSelection *forumSelection;

(我不确定 nonatomic 是做什么的,它是否与使多线程安全有关,我真的需要它吗?)

在主文件中:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    // Override point for customization after app launch   

    [window addSubview:forumSelection.view]; //<<<< Instruments highlights this line
    [forumSelection release];
    [window makeKeyAndVisible]; 
}  

最初我在标题或[forumSelection release]; 中没有属性,所以我认为这可能是它泄漏的原因,但是 Instruments 仍然说这个泄漏,我不知道为什么?

【问题讨论】:

    标签: iphone objective-c memory instruments memory-leaks


    【解决方案1】:

    你不应该在你正在做的地方释放它,而是将释放移动到 dealloc - 它不是“你的”释放 - 它是从 XIB 解压缩的。不解释泄漏。

    您确定泄漏不在 forumSelection 中吗?

    【讨论】:

    • 您是否在分层模式下使用仪器(底部选择器上的第二个选项)?您是否一直向下钻取以找到引用您的代码的最后一个位置,而不是第一个? (如果我没记错的话,点击错误然后 Alt 右箭头,它可能不会)
    • 否则,值得牢记的是乐器的谎言。用它来发现错误。如果您的代码中没有错误,那么您可能没问题。您是否尝试过静态分析(构建和分析?)
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2013-04-27
    • 2011-10-21
    • 2012-06-06
    • 2011-05-17
    相关资源
    最近更新 更多