Ios 什么是多值AddValueandLabel outIdentifier?

Ios 什么是多值AddValueandLabel outIdentifier?,ios,abaddressbook,abmultivalue,Ios,Abaddressbook,Abmultivalue,我一直在使用这个AddressBook方法,我不明白outIdentifier用于什么: bool ABMultiValueAddValueAndLabel ( ABMutableMultiValueRef multiValue, CFTypeRef value, CFStringRef label, ABMultiValueIdentifier *outIdentifier ); 文件没有为我澄清: 外标识符 要在其中放置服务器的标识符的地址 增值。传递NULL以忽略

我一直在使用这个AddressBook方法,我不明白outIdentifier用于什么:

bool ABMultiValueAddValueAndLabel (
   ABMutableMultiValueRef multiValue,
   CFTypeRef value,
   CFStringRef label,
   ABMultiValueIdentifier *outIdentifier
);
文件没有为我澄清:

外标识符

要在其中放置服务器的标识符的地址 增值。传递NULL以忽略标识符

有人知道这个参数的用途吗


提前谢谢

我对此做了一些研究,对这个奇怪的参数感到有点惊讶

所以我进入Xcode,导入了框架,找到了ABMultiValueIdentifier的文档。就是这样:

ab多值标识符

标识多值属性

typedef int32_t ABMultiValueIdentifier

讨论见“无效” 多值属性标识符”

iOS 2.0及更高版本提供了可用性。声明于 多值

我注意到的第一件事是它的类型是
int32\t
。这意味着它实际上是一个指向该值的指针(请注意
*outIdentifier

下面是常量的定义,
kABMultiValueInvalidIdentifier
。文件上说,

此预处理器定义使用类型与其声明类型不匹配的值标识多值属性

这个常量让我困惑,但我觉得outIdentifier可能是指向值位置的指针。这可能是通过使用指向值的指针来更改不可变ABMultiValueRef中的值的一种方法。这也可能是一个检查,看看您是否已经添加了值

如您所见,创建ABAddressBookRef的方法是使用
ABAddressBookCreateWithOptions(NULL,nil)
。NULL参数是保留的,并且您被告知在文档中使用NULL。这很可能是苹果公司内部运作所使用的东西。outIdentifier可能是苹果使用的另一个秘密参数,不希望开发人员这么做

但是,由于在本例中没有说明受限,我猜这个outIdentifier是一个指向该值的指针,因此可以对其进行更改。我总是通过零分,为了稳定,你也可以这样做。自从我开始使用通讯录以来,我从未见过有人使用这个参数

我最感兴趣的是,我从来没有想过要问这是为了什么


免责声明-我不确定我是否正确。这只不过是根据我在文档中阅读的内容和我对框架的经验进行的有根据的猜测。

对于InsertValueandLabelaIndex方法,它在输出上显示了
,即附加值的标识符。
感谢erdekhayser的研究。我也使用传递NULL,但我对参数感到困惑。