1

这个小宝石花了我几个小时的调试时间,所以我想我会在这里发布问题(和解决方案)。我正在创建一个通讯簿常量 ( kABPerson*Property) 数组,稍后我将使用它来提取联系人数据。令人惊讶的是,这些值似乎都为零。看起来这些的支持实际上是全局变量,即使它们看起来像常量(无论如何在 iOS 7 上),但我无法追踪任何内存覆盖问题。这到底是怎么回事?

4

1 回答 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 回答