这个小宝石花了我几个小时的调试时间,所以我想我会在这里发布问题(和解决方案)。我正在创建一个地址簿常量数组(kABPerson*Property
),我后来用它来提取联系人数据。令人惊讶的是,这些值都显示为零。看起来它们的支持实际上是全局变量,即使它们看起来像常量(无论如何在iOS 7上),但我无法追踪任何内存覆盖问题。到底是怎么回事?
答案 0 :(得分:0)
事实证明kABPerson*Property
“常数”实际上是在第一次调用ABAddressBookCreate
时初始化的。在此之前,值均为零。以下是一些示例代码:
NSLog(@"Before AddressBook Create, kABPersonLastNameProperty = %d", kABPersonLastNameProperty);
ABAddressBookRef store = ABAddressBookCreateWithOptions(NULL, NULL);
NSLog(@"After AddressBook Create, kABPersonLastNameProperty = %d", kABPersonLastNameProperty);
如果之前没有访问过地址簿,您会看到如下输出:
Before AddressBook Create, kABPersonLastNameProperty = 0
After AddressBook Create, kABPersonLastNameProperty = 1
我
其他调用也可以初始化常量,但从我的探索中,对ABAddressBookGetAuthorizationStatus
的调用不就足够了。