我目前正在通过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;
}
它确实发出泄漏信号。为什么?这是因为我的设置吗?这是一个错误吗?如果它是一个错误,我应该在哪里以及如何报告它?
答案 0 :(得分:1)
它会向您发出警告,因为您没有取消分配它。
-(void)dealloc{
[super dealloc];
[dict dealloc];
}
它没有警告您,因为您应该能够在创建对象后立即释放它们,并且分析器的目标是提醒您代码中可能存在的泄漏。
您可以使用autorelease
,也可以取消手动创建的对象。
P.S。,好奇心一点:你为什么使用Xcode 3.2.5?
不确切知道该版本是否可以,但在最新版本的Xcode中,当您运行该工具时,您可以通过一些带有解释的箭头来查看您正在解除分配的对象,类似于
答案 1 :(得分:0)
我刚刚发现重启并重新启动Xcode会将其恢复。