线程 1:单击按钮时发出 SIGABRT 信号
Posted
技术标签:
【中文标题】线程 1:单击按钮时发出 SIGABRT 信号【英文标题】:Thread 1: signal SIGABRT on button clicked 【发布时间】:2014-11-17 20:09:57 【问题描述】:我正在我的项目中实现一个注销按钮。 我通过使用 touch up inside 事件来附加它。单击注销时,用户被重定向到登录视图控制器,但由于某种奇怪的原因,应用程序在几秒钟后因以下错误而死亡。线程 1:信号 SIGABRT。
单击注销:(此方法所做的只是删除用户名并重定向到“登录”视图控制器)
-(IBAction)logout
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"User"];
[self dismissViewControllerAnimated:NO completion:nil];
UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self presentViewController:vc animated:NO completion:nil];
登录页面加载时什么都没有。
【问题讨论】:
【参考方案1】:您的注销签名完全错误。您应该将消息行更改为:
-(IBAction) logout:(id) sender
如果你愿意,你可以忽略发件人。您的内部修饰期望向具有参数的方法发送消息,而您的方法没有。这就是你崩溃的原因。
【讨论】:
谢谢。你的回答很有帮助。【参考方案2】:尝试使用以下代码更改您的代码:
-(IBAction)logout
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"User"];
[self dismissViewControllerAnimated:NO completion:^
UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self presentViewController:vc animated:NO completion:nil];
];
您可能在旧视图控制器被解除之前显示新视图控制器,即使您这样做没有动画。
【讨论】:
问题正如欧文所说。我必须添加 :(id)sender。由于内部修饰期望将参数发送给方法。我的方法没有参数,因此失败了。以上是关于线程 1:单击按钮时发出 SIGABRT 信号的主要内容,如果未能解决你的问题,请参考以下文章
线程 1:由于 XIB 中的未知类而发出信号 SIGABRT
Android WebRTC 随机崩溃,致命信号 6 (SIGABRT)、tid 1191 (TimeCheckThread) 中的代码 -6 (SI_TKILL)、pid 656 (audioser