gpt4 book ai didi

iphone - ABPeoplePickerNavigationController 仅在模拟器中被解雇时崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:03 27 4
gpt4 key购买 nike

我只在模拟器中遇到此崩溃。在真实设备上它可以正常工作和调试。(因此它不是太重要,但我正在做一个演示文稿,模拟器很方便。)

- (BOOL)peoplePickerNavigationController:

(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {


[self displayPerson:person];

if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)]){
[self dismissViewControllerAnimated:YES completion:nil];
} else {
[self dismissModalViewControllerAnimated:YES];
}

return NO;
}

崩溃是在:

[self dismissViewControllerAnimated:YES completion:nil];

我只看到:“线程 1:EXC_BREAKPOINT (code=EXC_I386_BTP, subcode=0x0)”

调试窗口中没有具体的输出。 Zoombies 已启用。我做 ARC。我正在使用 Storyboard,但我使用以下代码以编程方式调用 ABPersonPicker...:

-(void)showPeoplePickerController
{

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];

picker.peoplePickerDelegate = self;

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) {
[self presentViewController:picker animated:YES completion:nil];
} else {
[self presentModalViewController:picker animated:YES];
}

return;
}

请记住,它在我拥有的设备(iPod Touch 4th gen、iPhone 4 和 iPhone 4S)上运行良好

最佳答案

您的问题是您没有保留对选择器的强引用。添加一个 ivar 来保存它,然后在委托(delegate)回调中完成后,使用主队列上的 dispatch asyn block 将 ivar 清零并释放它。 (抱歉没有从 iPad 输入此代码)

编辑:查看您的 showPeoplePickerController 方法 - 您创建选择器并将其保存在一个自动程序中,当您退出该方法时它会被释放。您希望通过使用 ivar 而不是自动变量来保持对选择器的强引用。

然后您不想在委托(delegate)回调中释放选择器 - 这通常有效但会在意想不到的时候咬住您,因此您想在委托(delegate)回调完成后释放此类对象。事实上,如果我可以使用 'picker = nil' 释放它,我通常会先将对象委托(delegate)属性设置为 nil。在一个 block 中,'picker' 变成了'self->picker'。您也可以使用 performSelector:afterDelay:0 我只是更喜欢 block 。

EDIT2:所以我在

- (BOOL)peoplePickerNavigationController:shouldContinueAfterSelectingPerson:

只是返回NO。我等到这条消息:

- (void)peoplePickerNavigationControllerDidCancel:

驳回它。我还有一些其他代码会弹出一个操作表,确认保存选定的地址并取消操作,但它是旧代码,不确定现在如何工作。无论如何希望这会有所帮助。

关于iphone - ABPeoplePickerNavigationController 仅在模拟器中被解雇时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com