-4

私は Java のバックグラウンドを持っているので、メモリ管理の初心者です。NSString *str = @"hi"; からメモリを解放する必要がありますか? NSString *str = [[NSString alloc init]? を解放する必要がありますか? 私が合成した UILabel はどうですか?

4

2 に答える 2

2

コンパイル時の定数文字列オブジェクトであるため、文字列を解放する必要がない場合NSString *str = @"hi";(あなたは所有者ではありません)。2番目のケースNSString *str = [[NSString alloc] init]では、所有者であるため解放する必要があり、メモリを割り当てているため、責任があります。

retainまたはのようにプロパティを宣言する場合は、合成プロパティを解放する必要がありますcopy。通常、それらをリリースする良いサイトがdealloc方法です。

この Apple docを読む必要があります。少し大きいですが、便利です;)。

于 2012-05-05T16:56:31.497 に答える
2

ARC メモリ管理により、今はその必要はありません。詳細については、このリンクを確認するか、Google で「ARC メモリ管理」を検索してください。

それでもメモリを手動で管理したい場合は、ARC をオフにすることができます。簡単なメモリ管理のチュートリアルについては、このリンクを確認してください。

編集: iOS 5 を使用していない場合は、メモリを手動で管理する必要があります。「私が合成したUILabelはどうですか」という質問に答えて、それらを解放する方法を尋ねている場合は、単に呼び出します

[label release];

すべてのリリースステートメントを

- (void)dealloc

例えば:

- (void)dealloc {
    [label release];
    [super dealloc];
}
于 2012-05-05T16:57:41.353 に答える