我得到了一个相当意外的结果,代码如下:
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
NSLog (@"npeople = %d = %d", nPeople, CFArrayGetCount(people));
for (CFIndex i = 0; i < nPeople; i++)
{
ABRecordRef record = CFArrayGetValueAtIndex(people,i);
ABMultiValueRef numbers = ABRecordCopyValue(record, kABPersonPhoneProperty);
CFIndex count = ABMultiValueGetCount(numbers);
NSLog (@"%d %d", i, count);
}
我从未访问过第二个nslog,它在调用abmultivaluegetcount时崩溃,原因是:
:
*-[nscfstring count]:无法识别的选择器发送到实例0x383E72F4
**
由于未捕获异常“nsInvalidArgumentException”,正在终止应用程序,原因:“***-[nscfString Count]:无法识别的选择器发送到实例0x383E72F4”
简而言之,它的行为就像我的“数字”变量是一个nsstring。当我在上面写代码时,在网上的许多例子中都可以找到相同的代码。这里有人发现有什么问题吗?
哦,还有:它只在发布模式下崩溃(在调试模式下,一切正常)。