CLang错误(目标C):永远不会读取初始化期间存储的值

Sco*_*ton 2 objective-c clang-static-analyzer

Foo *oFoo = [[[Foo alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)

这就是我被教导如何在Objective C中编程,但CLang错误检查器抱怨从未读过初始值.但是oFoo是一个具有属性的对象.oFoo本身没有单一价值.属性值是重要的.

oFoo.PropertyA = 1;
oFoo.PropertyB = @"Hello, World."
Run Code Online (Sandbox Code Playgroud)

我应该忽略这个吗?这值得修理吗?什么是修复,看到"初始值"在我的背景下毫无意义?

bea*_*lex 9

通常这意味着:

  1. 你已经创建了一个变量.
  2. 您已为变量分配了一些值.对自己或它的属性无关紧要.
  3. 您已经"重新创建"了这个值或已完成的块(方法/ for-each/etc.).

对于一个简单的类型:

int a;
a = 2;
a = 3;
Run Code Online (Sandbox Code Playgroud)

永远不会使用第一个值(2).对象也可能发生类似的事情,例如:

Foo *oFoo = [[[Foo alloc] init] autorelease];

oFoo.PropertyA = 1;
oFoo.PropertyB = @"Hello, World."

oFoo = [[[Foo alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)

这里,第一个alloc-init块创建了一个被第二个alloc-init覆盖的值.并且错误告诉了类似的东西.

我可以关闭方法实现,而不是第二个alloc-init块,这将是类似的.