結末に驚いたのでメモ。
XcodeでBuild & Analyzeすると、下記のようなメッセージが出て困っていました。UILabelのインスタンスを返すような関数なのですが、ちゃんとautoreleas
Object with +0 retain counts returned to caller where a +1 (owning) retaincoun
t is expected
メモリ管理周りをググったり、stackoverf
Object with +0 retain counts returned to caller where a +1 (owning) retaincoun
t is expected - Stack Overflow
http://stackoverflow .com/quest ions/35534 01/object- with-0-ret ain-counts -returned- to-caller- where-a-1- owning-ret aincount-i
結局、コード自体は間違っていなくて、「関数名が良くない」ということでした。AppleのMemory Management
You “create” an object using a method whose name begins with “alloc” or “new” or contains “copy” (for example, alloc, newObject, or mutableCop
y). [意訳] Objectを作成する際にはalloc, new, copyなどで始まる関数名を使う(例、alloc, newObject, mutableCop
y)
コード内の関数名を書き換えて、解決!
(newで始まるだけではダメなのですね…)
1 //NG 2 (UILabel *)newLabelWithPrimaryC olor:(UIColor *)primaryCol or; 3 4 //OK 5 (UILabel *)createLabe lWithPrima ryColor:(UIColor *)primaryCol or;