【发布时间】:2011-09-27 13:11:40
【问题描述】:
在我运行 Xcode“分析”功能之前,我从未认为这是一个问题。假设我有一个名为 dude 的类,我创建了一个类的实例并合成了它,因此 self.dude 可用。
这很好用。但是,如果我在dealloc 中输入:
[self.dude release];
我收到分析器警告,因为它应该是:
[dude release];
但是,这会产生另一个警告,因为 Analyzer 认为我将 release 发送到类名,而不是 ivar。
现在,如果 ivar 被命名为与类不同的名称,则没有问题,[ivar release]; 可以在没有分析器警告的情况下工作。
我是否应该将此作为一般指示,将 ivar 命名为与类名相同的名称是不明智的?它从未干扰过我的产品编译或执行,但分析器对此提出了新问题。
【问题讨论】:
-
按照惯例,类名以大写字母开头,变量以小写字母开头。如果你遵循这个约定,你应该不会有问题。
-
您不应该真正调用该属性的释放,因为它不是真正的 ivar。它可能是一个副本或已经添加到具有 [[var retain] autorelease] 范例的自动释放池中,应该直接调用 ivar
[dude release]。 -
@bigkm
self.dude=nil和[dude release]哪个更好:p -
@Yuji 这不是我在说的,我不小心按了回车,不得不完成我的评论。
-
@bibkm 啊,我明白了。
[self.dude release]肯定是错的,我同意。
标签: objective-c xcode