使用大量使用Address Book框架的应用程序。有许多视图控制器可以与地址簿数据进行交互,它们都可以正常工作。除了一个,它杀了我。
我有一个包含地址簿访问权限的类,方法如下:
- (NSDictionary*)labelsToValues:(ABPropertyID)propertyID {
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef aRecord = ABAddressBookGetPersonWithRecordID(addressBook, [self recordIdFromAddressBookId]);
NSMutableDictionary *entries = [NSMutableDictionary dictionary];
ABMultiValueRef multiValueProperty = ABRecordCopyValue(aRecord, propertyID);
// do some other stuff
然后我在这样的地方叫它:
- (NSDictionary*)emailProperties {
return [self labelsToValues:kABPersonEmailProperty];
}
它有效!当然它确实如此,我发送的消息带有一个来自通讯簿框架的常量参数。所以它应该始终有效!
但事实并非如此。这个特定的emailProperties:消息是我在几个地方调用的消息......有时它可以工作,但有时却没有。当事情出错时,我把它通过调试器,我得到这样的东西:
怎么可能!?甚至更奇怪,如果我通过查看其他一切行为符合预期的视图控制器来“解决”有问题的视图控制器,然后我回到有问题的视图控制器,一切正常。所以,我猜这是某种链接错误,但我不确定如何开始进行故障排除。