1

iOS 用のアプリを開発していますが、メモリ不足の警告に関する問題が発生しています。

私のアプリは、ボタンをタップすると、多くのサブビューを含む大きなビューをロードしています。メモリ使用量が増加し、それはかなり理解できます (30 Mb から 80Mb へ)。ただし、ユーザーが別のメニュー項目を選択すると、このビューは解放されますが! アプリが使用するメモリの量は減少しません。次のコードを使用してビューを解放します。

storeView.hidden = YES;
NSLog(@"%d", [storeView retainCount]);
[storeView removeFromSuperview];
storeView = nil;

2 行目の NSLog には 1 が出力されるため、リリース後に割り当てを解除する必要があります。-(void) dealloc; の私の実装。呼び出されます (そして、最後の行で [super dealloc]; を呼び出します)。しかし、その後もメモリ不足の警告が表示されます。

計測器は、メモリ警告を引き起こす可能性のないリークされた NSString を 2 つだけ発見しました。

何かアドバイスをお願いできますか?

4

1 に答える 1

2

リリース コールは保持カウントを下げます。保持カウントが 0 の場合、クリアされる可能性がありますが、そうである必要はありません。保持カウントがゼロのときに変数にアクセスしようとすると、まだ機能する場合と機能しない場合があります。どちらにしても当てにはできません。

于 2012-09-11T13:24:12.897 に答える