>>826
というか、変数に代入する時点で前の値は破棄される(というと語弊がありそうだが…)だろ?
image=[UIImage alloc];
で、imageにUIImageをallocだけしたもの(インスタンスA)を入れて、
image=[UIImage imageNamed:@"aiu.png"];
直後にいきなりAを捨てて、imageNamed:で新たに生成した別のもの(インスタンスB)を入れてる訳だ。
普通に考えておかしいだろ。
image=[UIImage alloc];
した後で、
[image initなんちゃら];
するなら、Aを初期化している訳だから、まだ分かるが、その場合も、
image = [[UIImage alloc] initなんちゃら];とまとめて書くのが普通だ。
ちなみに、imageなんちゃらはコンビニエンスコンストラクタと呼ばれていて、
既にautoreleaseされたインスタンスを返すクラスメソッドだ。
コンビニエンスコンストラクタは、特に言語の仕様として決まっている訳じゃないが、クラスメソッドであり、
NSStringならstringなんちゃら、UIImageならimageなんちゃらと、返すオブジェクトの種類の名前で始まるのが慣例だ。
単にalloc+init+autoreleaseを呼び出して返してるだけのものもあるし、
内部で同じ不変インスタンスを複数作らないように工夫したり、Abstract Factoryパターンを実装しているものもある。
ARCが有効なら、alloc+initしても、コンビニエンスコンストラクタを使っても特にその後の書き方は変わらない。
autoreleaseせずに返すnewなんちゃらというのもあるが、普通は使われない。C++やJavaから来た人にとっては、馴染みがあるのはこっちだろう。