私は Java のバックグラウンドを持っているので、メモリ管理の初心者です。NSString *str = @"hi"; からメモリを解放する必要がありますか? NSString *str = [[NSString alloc init]? を解放する必要がありますか? 私が合成した UILabel はどうですか?
2 に答える
コンパイル時の定数文字列オブジェクトであるため、文字列を解放する必要がない場合NSString *str = @"hi";
(あなたは所有者ではありません)。2番目のケースNSString *str = [[NSString alloc] init]
では、所有者であるため解放する必要があり、メモリを割り当てているため、責任があります。
retain
またはのようにプロパティを宣言する場合は、合成プロパティを解放する必要がありますcopy
。通常、それらをリリースする良いサイトがdealloc
方法です。
この Apple docを読む必要があります。少し大きいですが、便利です;)。
ARC メモリ管理により、今はその必要はありません。詳細については、このリンクを確認するか、Google で「ARC メモリ管理」を検索してください。
それでもメモリを手動で管理したい場合は、ARC をオフにすることができます。簡単なメモリ管理のチュートリアルについては、このリンクを確認してください。
編集: iOS 5 を使用していない場合は、メモリを手動で管理する必要があります。「私が合成したUILabelはどうですか」という質問に答えて、それらを解放する方法を尋ねている場合は、単に呼び出します
[label release];
すべてのリリースステートメントを
- (void)dealloc
例えば:
- (void)dealloc {
[label release];
[super dealloc];
}