我一直在研究这个 AddressBook 方法,但我不明白 outIdentifier 的用途是什么:
bool ABMultiValueAddValueAndLabel (
ABMutableMultiValueRef multiValue,
CFTypeRef value,
CFStringRef label,
ABMultiValueIdentifier *outIdentifier
);
文档没有为我解决问题:
outIdentifier
The address at which to place the identifier of the added value. Pass NULL to ignore the identifier.
有人知道这个参数有什么用吗?
提前致谢!
最佳答案
我对此做了一些研究,对这个奇怪的参数感到有些惊讶。
所以我进入了 Xcode,导入了框架,并找到了 ABMultiValueIdentifier 的文档。就是这样:
ABMultiValueIdentifier
Identifies multivalue properties.
typedef int32_t ABMultiValueIdentifier;
Discussion See “Invalid Multivalue-Property Identifier”.
Availability Available in iOS 2.0 and later. Declared In ABMultiValue.h
我首先注意到它是 int32_t
类型。这意味着它确实是一个指向值的指针(另请注意 *outIdentifier
)
下面是常量的定义,kABMultiValueInvalidIdentifier
。文档说,
This preprocessor definition identifies an multivalue property with values whose type does not match its declared type.
这个常量让我感到困惑,但我觉得 outIdentifier 可能是指向值位置的指针。这可能是一种通过使用指向值的指针来更改不可变 ABMultiValueRef 中的值的方法。它也可能是检查您是否已经添加了该值。
如您所见,创建 ABAddressBookRef 的方法是使用 ABAddressBookCreateWithOptions(NULL, nil)
。 NULL 参数是保留的,并且在文档中告诉您使用 NULL。这可能是 Apple 用于其内部运作的东西。 outIdentifier 可能是 Apple 使用但不希望开发人员使用的另一个 secret 参数。
但是,由于在这种情况下它没有说 Restricted,我猜测这个 outIdentifier 是一个指向该值的指针,因此它可以被更改。我总是通过零,为了稳定,你也可以聪明。自从我开始使用地址簿以来,我从未见过有人使用过这个参数。
我非常感兴趣,因为我从未想过要问它的用途。
免责声明- 我不确定自己是否正确。这只不过是根据我在文档中阅读的内容和我使用该框架的经验做出的有根据的猜测。
关于ios - 什么是 ABMultiValueAddValueAndLabel outIdentifier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22378045/