2011-10-12 7 views
5

は、それは非常にイライラする私を発見した:自動解放と他のdeallocsはどちらか動作しませんので、xcode 4.2でどのようにメモリを解放しますか?あなたが使用することはできませんので、Xcodeの4.2で

-(void)dealloc { 
[label release]; //'release' is unavailable 
[super dealloc]; //'dealloc' is forbidden in automatic reference counting 
} 

は別の方法があります。

+0

...していません。プロジェクトの手動メモリ管理を使用している場合を除きます。 – JoePasq

+0

私はメモリを解放していない場合でも私はメモリの警告を取得しないだろうか? – iphonemaniac

+0

私は頭の上を言うことができません。その上のドキュメントをチェックして、私はメモリ警告が消えたとは思わない、特に市場にまだあるiPhone 3GSで。 – JoePasq

答えて

9

のXcode 4.2 "自動参照カウント"(別名ARC)を紹介します。これは、基本的に、あなたのためにretainとreleaseの呼び出しを挿入するコンパイラ機能です。 ARCでは、オブジェクトへのポインタがあれば、それを保持しています。ポインタが有効範囲外になるか、別のオブジェクトを指すようにポインタが再割り当てされると、元のオブジェクトが解放されます。それはとても素敵です。

だから、要するに、あなただけのすべてのretainへの呼び出し、release、およびautoreleaseを削除し、コンパイラがのためにあなたを正しいことを行います。

+0

それは素晴らしいです! – iphonemaniac

1

自動参照カウントを読んでください。コードを適切に記述すると、そのコードをもう実行する必要はありません。

変換せずに古いコードを使用する場合は、ARCを無効にします。 ARCを使用したくないソースモジュールのコンパイラフラグに-fno-objc-arcを入れてください。

ジョー

+0

どのようにコードを正しく書いていますか – iphonemaniac

+0

メモリを解放しなかった場合は問題になりますか? – iphonemaniac

+0

それはないでしょう – iphonemaniac

関連する問題