最近iOSプログラミングを始めたばかりで、Objective-Cの参照カウントを理解していると思いましたが、理解していなかったようです...次のコードは完全に実行されますが、後でアプリがクラッシュしEXC_BAD_ACCESS
ます(コード1またはコード2)。
ARC(PhoneGapベースのプロジェクト)を使用していません。
for(int i = 0; i < 10; ++i)
{
UIImage *a = [UIImage imageNamed:@"NavigationBarBackButtonBlack.png"];
UIImage *b = [a resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 7)];
NSLog(@"a has %d retains, b has %d retains, a==b == %d\n", [a retainCount], [b retainCount], a==b ? 1 : 0);
[a release];
[b release];
NSLog(@"#%d\n", i);
}
NSLog(@"FINISHED\n");
出力は私が期待する通りです:
a has 1 retains, b has 1 retains, a==b == 0
#0
a has 1 retains, b has 1 retains, a==b == 0
#1
a has 1 retains, b has 1 retains, a==b == 0
[...snip...]
a has 1 retains, b has 1 retains, a==b == 0
#9
FINISHED
ここでの問題は何ですか?自動リリースが行われていますか、それともキャップされた画像が元の画像への参照を保持していますか?わからない。