- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 IOS 7 中遇到 ABPeoplePickerNavigationController 问题,并出现以下错误
*** -[ABPeoplePickerNavigationController respondsToSelector:]: message sent to deallocated instance 0x9b4b050
在 IOS 6 上它工作正常,但在 ios 7 中它会在启用僵尸但没有僵尸的情况下给出此错误
Thread 1: EXC_BAD_ACCESS(code=2,address=0x0)
比我启用僵尸
这是我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
self.contacts = [[NSMutableArray alloc] initWithCapacity:10];
self.addressBook=ABAddressBookCreateWithOptions(NULL, NULL);
[self checkAddressBookAccess];
}
(void)requestAddressBookAccess
{
ContactsViewController * __weak weakSelf = self;
ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted, CFErrorRef error)
{
if (granted)
{
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf accessGrantedForAddressBook];
});
}
});
}
-(void)accessGrantedForAddressBook
{
NSMutableArray *savedContacts=[[NSMutableArray alloc] initWithArray:[DatabaseHandler getAllContacts]];
if (savedContacts &&savedContacts.count!=0)
[self.contacts addObjectsFromArray:savedContacts];
}
- (IBAction)popUpAddExistingContact:(id)sender {
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[picker setDelegate:self];
[self presentViewController:picker animated:YES completion:nil];
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
NSString *viewControllerDesc=[viewController description];
NSString *t_st = @"ABContactViewController";
NSRange rang =[viewControllerDesc rangeOfString:t_st options:NSCaseInsensitiveSearch];
if (rang.length == [t_st length])
{
navigationController.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(addPerson:)];
}
else if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]] && [viewController isKindOfClass:[ABPersonViewController class]])
{
ABPersonViewController *DVC=(ABPersonViewController*)viewController;
self.currentPerson=DVC.displayedPerson;
navigationController.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(addPerson:)];
}
else{
navigationController.topViewController.navigationItem.rightBarButtonItem = nil;
}
navigationController.topViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];
}
-(IBAction)addPerson:(id)sender{
if (self.currentPerson!=NULL)
{
CFStringRef firstName;
int recordID;
firstName = ABRecordCopyValue(self.currentPerson, kABPersonFirstNameProperty);
recordID = ABRecordGetRecordID(self.currentPerson);
MyContact *contact=[[MyContact alloc] init];
contact.Name=(__bridge NSString *)(firstName);
contact.contactID=[NSString stringWithFormat:@"%i",recordID];
contact.phones=[[NSMutableArray alloc] init];
ABMultiValueRef phones = ABRecordCopyValue(self.currentPerson, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
CFStringRef locLabel = ABMultiValueCopyLabelAtIndex(phones, j);
NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
[contact.phones addObject:phoneNumber];
CFRelease(phoneNumberRef);
CFRelease(locLabel);
}
CFRelease(firstName);
//CFRelease(lastName);
}
//[self dismissModalViewControllerAnimated:YES];
[self dismissViewControllerAnimated:YES completion:^(void ){
[self.popUpContactView removeFromSuperview];
}];
}
一旦 peoplepickercontroller 被解雇,应用程序就会在 ios 7 中崩溃
*** -[ABPeoplePickerNavigationController respondsToSelector:]: message sent to deallocated instance 0xb236c00
0x17d811: jmp 0x17d90c ; ___forwarding___ + 1020
Thread 1:EXC_BREAKPOINT (code=EXC_1386_BPT,sucode 0x0)
最佳答案
在关闭之前尝试将 peopleViewController 委托(delegate)设置为 nil,并在一段时间内禁用此操作的第二次可能的调用(例如,如果用户多次按下按钮)。假设您有对 ABPeoplePickerNavigationController 实例的引用。像 self.adressBook 这样的名称;
然后在关闭 PeoplePickerNavigationController 之前设置
self.adressBook.peoplePickerDelegate = nil
self.adressBook.delegate = nil;
并确保在解除之后您不会调用您的peoplePickerNavigationController引用,或者您对此实例的引用是弱,而不是>分配类型。
关于iphone - ABPeoplePickerNavigationController 在 IOS 7 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22424159/
我想调出用户的地址簿,并使用新的 PeoplePicker Controller 对结果进行切片,以仅显示与特定术语匹配的结果。我看到 UIPeoplePickerNavigationControll
我的联系人列表在模拟器中完美显示。它获取电话号码并将其放入文本框中。所以我决定在我的 iPhone 上尝试一下,它实际上执行了我点击的东西。它会调用该号码,而不是将号码放入文本框中。代码如下: - (
有什么方法可以自定义 ABPeoplePickerNavController 数据源吗?我的意思是,我不需要从手机的地址簿中获取成员,而是需要它从数组中获取数据,例如在我的应用程序中。我将从服务器获取
您好,我有一个 ABPeoplePickerNavigationController,在创建时设置其导航栏隐藏。 peoplePickerController.navigationBar.hidden
联系人应用程序中有一个“添加即时消息”按钮。有一些预定义的,如 Skype、MSN、Facebook 等,但您可以添加自定义的。 但是,如果您添加自定义即时消息地址,并使用 ABPeoplePicke
我有一个核心数据堆栈,其中包含一个名为“客户端”的实体。每个客户端都有一个“addressBookID”属性,它指的是地址簿中个人记录的唯一ID。我目前正在使用 fetchedResultsContr
我想使用 ABPeoplePickerNavigationController 但我想自定义 View 。我想要一些联系人的附件图像,并且我想以不同于默认方式的方式对它们进行排序。有办法吗?还是我必须
在使用 ABPeoplePickerNavigationController 时,didSelecPerson 委托(delegate)将在用户选择一个人时被调用,然后 ABPeoplePickerN
Apple 提供了一个名为 PeoplePicker 的示例项目,它启动了一个仅包含具有电子邮件地址的联系人的 ABPeoplePickerNavigationController: ABPeople
我正在检查我的应用程序以消除所有内存泄漏,分析工具使用 abpeoplepickernavigationcontroller 发现了一个泄漏。 我知道这与复制方法有关?但不知道如何在编写时的位置和时间
我只在模拟器中遇到此崩溃。在真实设备上它可以正常工作和调试。(因此它不是太重要,但我正在做一个演示文稿,模拟器很方便。) - (BOOL)peoplePickerNavigationControlle
当使用 ABPeoplePickerNavigationController 时,加载和显示控件需要一些时间(~0.5 秒),这比其他弹出窗口的正常 react 时间要慢。 我的解决方案是将 Cont
我正在使用此代码在应用中显示联系人。 - (IBAction) selectContact:(id)sender { ABPeoplePickerNavigationController *p
几周来我一直在寻找解决方案,这让我几近绝望。 问题很简单: 通过 ABPeoplePickerNavigationController(作为 ModalView),应该选择一个人。 然后仅(例如)显示
我正在对 ABPeoplePickerNavigationController 进行子类化,我想知道如何隐藏正确的工具栏项“Cancel”? 我一直在寻找,但找不到合适的解决方案。 谢谢! 最佳答案
我正在使用 ABPeoplePickerNavigationController 由用户选择地址簿联系人。使用此代码隐藏按钮操作: ABPeoplePickerNavigationController
我想提示用户从地址簿中选择 1 个或多个人,但 ABPeoplePickerNavigationController 不允许这样做(这很讽刺,因为这是人 选择器,而不是人选择器)。 在我创建自己的 C
我在我的应用程序中将 ABPeoplePickerNavigationController 显示为选项卡。用户点击姓名,然后点击电子邮件地址,然后我对电子邮件地址执行一些操作。 之后,我希望他们选择的
我正在使用 ABPeoplePicker 显示联系人列表。 我想过滤此联系人列表,仅显示具有电子邮件地址的联系人。我该怎么做? 最佳答案 我需要它,所以我开始做类似的事情。查看https://gith
我最近将我的 iPhone 和 Xcode 从 iOS 6 升级到 iOS 8,并且遇到了从 ABPeoplePickerNavigationController 选择电话号码或电子邮件地址时执行“默
我是一名优秀的程序员,十分优秀!