这个小宝石花了我几个小时的调试时间,所以我想我会在这里发布问题(和解决方案)。我正在创建一个通讯簿常量 ( kABPerson*Property
) 数组,稍后我将使用它来提取联系人数据。令人惊讶的是,这些值似乎都为零。看起来这些的支持实际上是全局变量,即使它们看起来像常量(无论如何在 iOS 7 上),但我无法追踪任何内存覆盖问题。这到底是怎么回事?
问问题
157 次
1 回答
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
I 其他调用也可以初始化常量,但从我的探索来看,调用ABAddressBookGetAuthorizationStatus
是不够的。
于 2013-10-22T16:42:35.653 回答