13

私はiOSプログラミングを勉強しています。

住所を関連付けるコードを書きました。

たくさんの方法があります。お気に入り

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

これがgroup1です

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

もう1つはここにあります、group2

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

他にもたくさんの方法があることを私は知っています。

しかし、私はいつCFReleaseメソッドを使用するのだろうか。

group2のすべてのメソッドはCFReleaseを実行しないと思います

割り当てられていない「Get」という単語が含まれているためです。

そして私はgroup1のすべての方法がCFReleaseを使用しなければならないと思います

文字列「コピー」があるからです。

本を持っています。

しかし、CFReleaseは2回使用されています。

1つはリリースABAddressBookCreate()です

もう1つはABAddressBookCopyPeopleWithNameです。

他のすべてのものはCFReleaseを使用しません。

だから私はいつCFReleaseを使うのだろうか。

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

4

2 に答える 2

13

関数名に「コピー」または「作成」が含まれている場合は、オブジェクトを所有しているため、作業が終了したらオブジェクトを解放する必要があります。これは「作成ルール」と呼ばれます。Core Foundationのメモリ管理の詳細については、CoreFoundationのメモリ管理プログラミングガイドを参照してください。

于 2012-04-18T06:34:47.873 に答える
3

Core Foundationオブジェクトを作成するとき、またはその所有者になるときはいつでも、を呼び出しますCFRelease

CFMemory管理のドキュメントをご覧ください

于 2012-04-18T06:33:06.170 に答える