【发布时间】:2010-06-03 15:32:21
【问题描述】:
使用以下代码,我得到了一个相当意外的结果:
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]: unrecognized selector sent to instance 0x383e72f4”
简而言之,它的行为就好像我的“数字”变量是一个 NSString。虽然我自己编写了上面的代码,但在网络上的许多示例中都可以找到相同的代码。这里有人发现它有什么问题吗?
哦,还有:它只在发布模式下崩溃(在调试模式下,一切都很好)。
【问题讨论】:
标签: iphone objective-c ios