我对此做了一些研究,对这个奇怪的参数感到惊讶。
所以我进入了 Xcode,导入了框架,并找到了 ABMultiValueIdentifier 的文档。就是这个:
AB多值标识符
标识多值属性。
typedef int32_t ABMultiValueIdentifier;
讨论 请参阅“无效的多值属性标识符”。
可用性 适用于 iOS 2.0 及更高版本。在 ABMultiValue.h 中声明
我注意到的第一件事是它是 type int32_t
。这意味着它确实是一个指向值的指针(还要注意*outIdentifier
)
下面是常数的定义,kABMultiValueInvalidIdentifier
。文件说,
此预处理器定义标识其类型与其声明类型不匹配的值的多值属性。
这个常数让我感到困惑,但我觉得 outIdentifier 可能是指向值位置的指针。这可能是一种通过使用指向值的指针来更改不可变 ABMultiValueRef 中的值的方法。它也可能是检查您是否已经添加了值。
如您所见,创建 ABAddressBookRef 的方式是使用ABAddressBookCreateWithOptions(NULL, nil)
. NULL 参数是保留的,您被告知在文档中使用 NULL。这很可能是 Apple 用于其内部运作的东西。outIdentifier 可能是 Apple 使用且不希望开发人员使用的另一个秘密参数。
但是,由于在这种情况下没有说 Restricted,我猜测这个 outIdentifier 是一个指向该值的指针,因此可以更改它。我总是通过零,为了稳定,你也可能很聪明。自从我开始使用通讯簿以来,我从未见过有人使用此参数。
我最感兴趣是因为我从未想过要问它是干什么用的。
免责声明- 我不确定我是否正确。这只是基于我在文档中阅读的内容和我对框架的经验的有根据的猜测。