0

我目前正在通过 iTunesU 上 CS193P 课程,老师Build and Analyze多次提到该选项。他说这是一个很好的工具,玩起来很有趣。
所以我尝试了,发现它不起作用,或者我不明白它应该如何工作(我认为是最后一个选项)。
我有一些内存泄漏,它根本没有警告我!我在网上看到应该出现一个蓝色的东西,告诉我这是一个泄漏,但我没有看到任何东西,虽然我正在做NSDictionary *dict = [[NSDictionary alloc] init];

它应该如何工作?从我在互联网上阅读的内容来看,我认为它应该预示着潜在的泄漏。我究竟做错了什么?

我正在使用 XCode 3.2.5。

谢谢。

更新:

我认为这是一种错误。
当我在接口中声明NSDictionary *dict;它并初始化它(但没有释放它)时,它什么也没说。

当我声明并初始化它 - (void) init并且不在那里释放它时:

- (void) init {
    if(self = [super init])
        NSDictionary *dict = [[NSDictionary alloc] init];
    return self;
}

它确实表明泄漏。为什么?这是因为我的设置吗?这是一个错误吗?如果它是一个错误,我应该在哪里以及如何报告它?

4

2 回答 2

1

它给你一个警告,因为你没有释放它。

-(void)dealloc{
   [super dealloc]; 
   [dict dealloc];
}

它不会警告您,因为您应该能够在创建对象后立即释放它们,并且分析器的目标是提醒您代码中可能存在的泄漏。

您可以使用autorelease,也可以释放手动创建的对象。

PS,有点好奇:你为什么使用 Xcode 3.2.5?

不知道该版本是否可以,但是在最新版本的 Xcode 中,当您运行该工具时,您可以通过一些带有解释的箭头来查看正在释放的对象,例如

于 2012-06-23T17:56:59.783 回答
0

我刚刚发现重新启动并重新启动 Xcode 会将其恢复。

于 2013-05-08T05:39:30.143 回答