頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


retainCountの謎

メモリ管理がらみでいろいろと迷うことがありますが、そんな時に変数のretainCountをチェックすることがあります。
ところがこの値があまりあてにならないんだそうな。

こたつつきみかん » Objective-Cのメモリ管理
↑まあ実際自分であれ?どーなってんの?と思ってこの記事を見つけたわけですが。

NSNumber *num = [[NSNumber  alloc] initWithInt:1];
NSString *s = [[NSString alloc] initWithString:@"ABC"];
         
NSLog( @"count of num is %d", [num retainCount] );//9
NSLog( @"count of s is %d", [s retainCount] );//2147483647
        
[num release];
[s release];
↑ほんと意味不明。
なんだよ、9とか2147483647って?

どちらもalloc + initWith~ってのでメモリを割り当てて初期化してるから、その時点でretainCountは1になってて、使ったらreleaseする、って認識なんだけど、、、
それが、なんでそんな意味不明な数字がでるんだろうねえ、、、

NSStringのretainCountが異常な値になる件 - iPhoneアプリ開発まっしぐら★ - iPhoneアプリ開発グループ

じゃあretainCountが2147483647だとreleaseは考えなくっていいってこと?
ってそんなことを考えるのが面倒だよなあ、、、
どう考えたらいいのかサッパリわからん。


追記
上記コードでrelease後にretainCountを再度見ると、
NSNumberの方は8(1減ってる)
NSStringの方は2147483647(変わらず)
になってる。
んー、やっぱりわからんな。

<< iTunesのデータ引っ越し  TopPage  Objective-Cの配列で数値を扱う時にはまった >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/406-3ffd85cd




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad