kABPerson *属性“常量”未初始化

时间:2013-10-22 16:42:36

标签: ios abaddressbook

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

1 个答案:

答案 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的调用就足够了。