2012-04-18 5 views
10

私はiOSプログラミングを勉強しています。CFReleaseはいつ使用しますか?

私は、アドレスに関連付けられたコードを書きました。

非常に多くの方法があります。 like

私はグループを分けています。

はここ

ABAddressBookCreate(); 
ABRecordCopyCompositeName(argument); 
ABRecordCopyValue(argument1, argument2); 
ABRecordCopyValue(argument1, argument2); 
ABMultiValueCopyLabelAtIndex(argument1, argument2); 
ABMultiValueCopyValueAtIndex(argument1, argument2); 

GROUP1だともう一つは、私は非常に多くの他の方法があります知っている

CFArrayGetCount(argument); 
CFArrayGetValueAtIndex(argument1, argument2); 
ABMultiValueGetCount(argument); 

グループ2、右ここにあります。

私はCFReleaseメソッドを使用しています。

は、私は言葉「GET」、割り当てられていないが含まれているため、グループ2のすべてのメソッドが

CFRelease

をしないと思います。

は、iはグループ1のすべてのメソッドは、文字列「コピー」がありますのでCFRelease

を使用することがあると思います。

私は本を持っています。

しかし、CFリリースは2回使用されています。

一方がもう一方がABAddressBookCopyPeopleWithNameある解放ABAddressBookCreate()

あります。

他にもCFリリースを使用していません。

私はCFReleaseを使用しているのですか?

私はCFReleaseを使用するとき教えてください。

答えて

9

見て、あなたがそれをあなたの作業を終了したときにそれを解放しなければなりませんので、あなたは、オブジェクトを所有して「作成」。これは「作成ルール」と呼ばれます。 Core Foundationのメモリ管理の詳細については、Memory Management Programming Guide for Core Foundation

+0

などがあります。同じ問題があります。私は間違った方法でいくつかのCore Foundationオブジェクトをリリースする予定です。私はどのように私は各オブジェクトの保持カウントをデバッグすることができると私はそれをリリースすることができることを知って尋ねたい。 – Sosily

+1

静的アナライザーを実行し、コピー、作成、または保持されたすべてのオブジェクトが正しくリリースされているかどうかを確認します。 – graver

+0

ありがとう!今は大丈夫です! – Sosily

3

Core Foundationオブジェクトを作成したり、所有者になったときは、CFReleaseと呼ぶことにします。 CFMemory managementドキュメント関数名が「コピー」またはが含まれている場合

関連する問題