CLang error (objective C): value stored during initialization is never read

Scott Pendleton picture Scott Pendleton · Apr 15, 2010 · Viewed 7.3k times · Source
Foo *oFoo = [[[Foo alloc] init] autorelease];

This is how I was taught to program in Objective C, yet the CLang error checker complains that the initial value was never read. But oFoo is an object with properties. oFoo itself has no single value. The property values are what matter.

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

Should I just ignore this? Is this worth fixing? What is the fix, seeing that "initial value" is meaningless in my context?

Answer

bealex picture bealex · Apr 15, 2010

Usually that means:

  1. You've created a variable.
  2. You've assigned some value to a variable. Doesn't matter, to itself or to it's properties.
  3. You've "recreated" this value or finished block (method/for-each/etc.).

For a simple type:

int a;
a = 2;
a = 3;

First value (2) is never used. Similar things can happen with objects, for example:

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

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

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

Here first alloc-init block created a value that was overridden by second alloc-init. And error tells something like that.

Instead of second alloc-init block I can close method implementation, that will be similar.