Foo *oFoo = [[[Foo alloc] init] autorelease];
这就是我被教导在 Objective C 中编程的方式,但 CLang 错误检查器抱怨从未读取过初始值。但是 oFoo 是一个具有属性的对象。oFoo 本身没有单一值。属性值很重要。
oFoo.PropertyA = 1;
oFoo.PropertyB = @"Hello, World."
我应该忽略这个吗?这值得修复吗?看到“初始值”在我的上下文中没有意义,解决方法是什么?
Foo *oFoo = [[[Foo alloc] init] autorelease];
这就是我被教导在 Objective C 中编程的方式,但 CLang 错误检查器抱怨从未读取过初始值。但是 oFoo 是一个具有属性的对象。oFoo 本身没有单一值。属性值很重要。
oFoo.PropertyA = 1;
oFoo.PropertyB = @"Hello, World."
我应该忽略这个吗?这值得修复吗?看到“初始值”在我的上下文中没有意义,解决方法是什么?
通常这意味着:
对于简单类型:
int a;
a = 2;
a = 3;
第一个值 (2) 从未使用过。类似的事情也可能发生在对象上,例如:
Foo *oFoo = [[[Foo alloc] init] autorelease];
oFoo.PropertyA = 1;
oFoo.PropertyB = @"Hello, World."
oFoo = [[[Foo alloc] init] autorelease];
这里第一个 alloc-init 块创建了一个被第二个 alloc-init 覆盖的值。错误说明了类似的事情。
我可以关闭方法实现,而不是第二个 alloc-init 块,这将是相似的。
我认为亚历山大·巴巴耶夫可能是对的。这是实际代码:
Part *oPart = [[[Part alloc] init] autorelease];
iParts = aParts.count;
for (iPart=0;iPart<iParts;iPart++) {
oPart = [aParts objectAtIndex:iPart];
aPart 是 Part 对象的数组。也许我应该删除第一行,最后一行应该是这样的:
Part *oPart = [aParts objectAtIndex:iPart];
如果我这样做,我不必在循环结束时显式释放 oPart。通过在循环开始之前声明 oPart,我试图提高效率并重用 oPart 对象,而不是每次都通过循环创建/释放。
有人知道哪种方法更好吗?