1

私はこの AddressBook メソッドを使用してきましたが、outIdentifier が何に使用されるのか理解できません。

bool ABMultiValueAddValueAndLabel (
   ABMutableMultiValueRef multiValue,
   CFTypeRef value,
   CFStringRef label,
   ABMultiValueIdentifier *outIdentifier
);

ドキュメントは私のために物事をクリアしません:

outIdentifier

追加された値の識別子を配置するアドレス。識別子を無視するには、NULL を渡します。

このパラメーターが何に使用されているか知っている人はいますか?

前もって感謝します!

4

1 に答える 1

1

私はこれについて少し調査しましたが、この奇妙なパラメーターについて半分驚いています。

そこで、Xcode にアクセスしてフレームワークをインポートし、ABMultiValueIdentifier のドキュメントを見つけました。これです:

ABMultiValueIdentifier

複数値プロパティを識別します。

typedef int32_t ABMultiValueIdentifier;

ディスカッション 「無効な複数値プロパティ識別子」を参照してください。

提供状況 iOS 2.0 以降で利用可能です。ABMultiValue.h で宣言

最初に気付くのは、それがタイプであるということですint32_t。これは、実際に値へのポインターであることを意味します ( にも注意してください*outIdentifier)

その下に、定数の定義がありkABMultiValueInvalidIdentifierます。ドキュメントによると、

このプリプロセッサ定義は、型が宣言された型と一致しない値を持つ複数値プロパティを識別します。

この定数は私を混乱させますが、outIdentifier が値の場所へのポインターである可能性があるように感じます。これは、値へのポインターを使用して、不変の ABMultiValueRef の値を変更する方法であると想定されている可能性があります。また、すでに値を追加したかどうかを確認するためのチェックでもあります。

ご覧のとおり、ABAddressBookRef を作成する方法は を使用することABAddressBookCreateWithOptions(NULL, nil)です。NULL パラメータは予約されており、ドキュメントでは NULL を使用するように指示されています。これはおそらく、Apple が内部の仕組みに使用するものです。outIdentifier は、Apple が使用し、開発者に使用させたくない別の秘密のパラメーターである可能性があります。

ただし、この場合は制限付きとは言わないので、この outIdentifier は値へのポインターであるため、変更できると推測しています。私は常に nil を渡してきました。安定性のために、あなたにとっても賢明かもしれません。アドレス帳を使い始めて以来、このパラメータを使用している人を見たことがありません。

私はそれが何のためにあるのかを尋ねるとは思っていなかったので、私は最も興味をそそられました.

免責事項- 私が正しいとは断言できません。これは、私がドキュメントで読んだこととフレームワークで得た経験に基づいた、経験に基づいた推測にすぎません。

于 2014-03-13T22:40:31.200 に答える