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)
我应该忽略这个吗?这值得修理吗?什么是修复,看到"初始值"在我的背景下毫无意义?
通常这意味着:
对于一个简单的类型:
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块,这将是类似的.