iOS:奇怪的EXC

编程入门 行业动态 更新时间:2024-10-25 16:30:39
iOS:奇怪的EXC_BAD_ACCESS与2个模态viewControllers(iOS: strange EXC_BAD_ACCESS with 2 modal viewControllers)

我有2个模态viewControllers:1) 过滤器 2) 登录

SignInviewController中,我有一个user_login textField,它自动变为活动状态(显示键盘):

-(void)viewDidLayoutSubviews { [self.user_login becomeFirstResponder]; }

如果我先打开SignInviewController ,一切都很好,键盘显示,我可以登录。

但是如果我首先打开模态FilterviewController ,更改过滤器设置,单击“完成”,然后打开SignInviewController - 我在iOS尝试显示键盘时获得EXC_BAD_ACCESS。

SignInviewControllerFilterviewController之间没有连接 - 完全独立 - 所以我无法理解FilterviewController如何导致SignInviewController崩溃。

更新

Xcode突出显示[self.user_login becomeFirstResponder]; 绿色线和注意: Thread 1: EXC_BAD_ACCESS (code=1 address=0xb1057169)

更新-2

刚注意到还有一件事导致同样的错误。 如果我打开模态过滤器,单击任何textField(键盘显示),然后单击“完成”(过滤器关闭),然后再次打开过滤器并再次单击textField,我得到相同的EXC_BAD_ACCESS。

UPDATE-3

用户登录:

@property (strong) IBOutlet UITextField *user_login;

I have 2 modals viewControllers: 1) Filters 2) Sign-in.

In SignInviewController I have a user_login textField, which automatically becomes active (shows keyboard):

-(void)viewDidLayoutSubviews { [self.user_login becomeFirstResponder]; }

If I open SignInviewController first, everything is fine, keyboard shows up, I can sign-in.

But if I open modal FilterviewController first, change filter settings, click "Done", then open SignInviewController - I get EXC_BAD_ACCESS at the moment when iOS tries to show keyboard.

SignInviewController & FilterviewController are not connected between each other - totally separate - so I can't understand how FilterviewController causes crash of SignInviewController.

UPDATE:

Xcode highlights [self.user_login becomeFirstResponder]; line with green color and note: Thread 1: EXC_BAD_ACCESS (code=1 address=0xb1057169)

UPDATE-2:

Just noticed one more thing causing the same error. If I open modal Filter, click on any textField (keyboard shows), then click "Done" (Filter closes), then open Filter again and click on textField again, I get the same EXC_BAD_ACCESS.

UPDATE-3

user_login:

@property (strong) IBOutlet UITextField *user_login;

最满意答案

看来user_login指向的文本字段已被释放。 user_login是unsafe_unretained属性吗?

EXC_BAD_ACCESS通常是一个对象被释放并在之后发送消息的结果。 您可以通过启用僵尸找到有关错误的更多信息:

在Xcode的方案编辑器中,切换到Diagnostics选项卡并选中“Enable Zombie Objects”。

Problem was caused by DAKeyboardControl library. I used it in one of my View Controllers, and I forgot to do this:

-(void) viewDidDisappear:(BOOL)animated { [self.view removeKeyboardControl]; }

DAKeyboardControl subscribes for keyboard NSNotifications - and it needs to be removed by the method above.

更多推荐

本文发布于:2023-07-31 02:39:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1340570.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:奇怪   iOS   EXC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!