【问题标题】:Some Warnings printed when I use ABNewPersonViewController当我使用 ABNewPersonViewController 时打印了一些警告
【发布时间】:2014-07-21 10:15:21
【问题描述】:

我正在使用 ABNewPersonViewController 添加或编辑地址人。但是,当我点击完成按钮时,总是会出现一些警告。记录数据成功保存到系统通讯录,但还是看不懂警告。

Jul 21 17:58:41 Jerrys-iPhone YouxinClient[2052] <Notice>: (Warn ) [ABLog]: <ABSource.c ABAddressBookCopyDefaultSource:111> Actual default source doesn't exist
Jul 21 17:58:41 Jerrys-iPhone YouxinClient[2052] <Notice>: (Warn ) [ABLog]: <ABSource.c ABAddressBookCopyDefaultSource:118> Failed to fallback to local source as it is not a valid default source

这样的代码:

__block ABAddressBookRef pAddressbook = [PublicFunc createAddressBookInstance];
ABRecordRef person = ABAddressBookGetPersonWithRecordID(pAddressbook, self.oneContact._addressPerson.nAddressId);

ABNewPersonViewController *pPicker = [[ABNewPersonViewController alloc] init];
UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:pPicker];

pPicker.newPersonViewDelegate = self;
pPicker.displayedPerson = person;

[self presentViewController:nav animated:YES completion:^(void){
FreeMemory_CFRelease(pAddressbook);
}];

[pPicker release]; pPicker = nil;
[nav release]; nav = nil;

【问题讨论】:

    标签: ios objective-c abaddressbook


    【解决方案1】:

    我在使用ABPersonViewController 时遇到了类似的问题。
    在将ABPersonRef 分配给ABPersonViewController.displayedPerson 之后,我释放了addressBook,假设ABPersonViewController 将保留addressBook
    该问题已升级为苹果的技术支持事件,苹果表示地址簿的发布是错误的。
    令人惊讶的是,只要发布在那里,静态分析器就会成功运行,但我的应用程序失败了。删除版本后,静态分析器警告可能存在内存泄漏,但应用程序运行成功。
    所以我的建议是

    1. 用僵尸运行仪器可以查看你是否 过度释放通讯录,以及
    2. 注释完成块中的release 语句,看看警告是否消失。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多