ios - SIGABRT线程错误运行简单的iOS应用程序

标签 ios xcode multithreading sigabrt

好的,这样的问题有很多答案,但是没有一个对我有用。基本上我已经写了一个非常简单的iOS应用,它带有标签和按钮。单击按钮,标签将更改。这是代码

//ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
- (IBAction)buttonPressed:(id)sender;
@property (strong, nonatomic) IBOutlet UILabel *predictionLabel;

@end

    //
//  ViewController.m
//  CrystalBall
//
//  
//

#import "ViewController.h"

@implementation ViewController
@synthesize predictionLabel;

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setPredictionLabel:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
        [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
        [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)buttonPressed:(id)sender {
    self.predictionLabel.text = @"Definitley Yes!";
}
@end

当我在模拟器中运行它时,应用程序可以正常打开,然后单击“预测”按钮,然后冻结,这是绿色显示的错误
Thread 1: Program recieved signal: "SIGABRT".

沿着一条线读
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
调试器说:
2013-01-19 22:53:30.511 CrystalBall [441:f803] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[UIView setText:]:无法识别的选择器已发送至实例0x6a19c70'
*
首先抛出调用堆栈:2013-01-19 22:53:30.511 CrystalBall[441:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setText:]: unrecognized selector sent to instance 0x6a19c70' *** First throw call stack: (0x13b9052 0x154ad0a 0x13baced 0x131ff00 0x131fce2 0x2385 0x13baec9 0x135c2 0x1355a 0xb8b76 0xb903f 0xb82fe 0x38a30 0x38c56 0x1f384 0x12aa9 0x12a3fa9 0x138d1c5 0x12f2022 0x12f090a 0x12efdb4 0x12efccb 0x12a2879 0x12a293e 0x10a9b 0x1da8 0x1d05) terminate called throwing an exception(gdb)
希望这是足够的信息。谢谢!

最佳答案

      '-[UIView setText:]: unrecognized selector sent to instance 0x6a19c70'


表示您正在尝试将setText消息发送到没有任何此类方法的UIView实例。

这可能来自以下语句:
  self.predictionLabel.text = @"Definitley Yes!";

因此,您应该查看如何定义predictionLabel并确保其类型正确。

关于调试器向您显示这一行的事实:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

您应该在Xcode中定义一个异常断点以捕获所有异常:
  • 转到左侧 Pane 中的“断点”选项卡;
  • 在 Pane 底部的
  • 中,您会找到一个+图标;
  • 单击它,然后选择添加异常断点;
  • 确认并完成。

  • 现在,调试器将在导致sigabrt的实际行上停止,以便您可以检查对象的状态。

    关于ios - SIGABRT线程错误运行简单的iOS应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428025/

    相关文章:

    java - 从运行方法/线程返回数据以更新 GUI

    C - Linux - Pthreads 和信号量

    ios - 有没有办法在 swift 中自定义变量命名的声明?

    ios - 使用深度链接启动时应用程序未按预期启动

    swift - Xcode 8 beta 6 中的 performActionForShortcutItem

    Xcode:将全新框架链接到全新应用程序失败,错误代码为 "image not found"

    iphone - iOS 是否允许开发人员这样做?

    javascript - 移动端的 HTML5 可视化

    ios - 有人知道如何修复选择器错误吗?

    .net - 如何限制逻辑调用上下文的范围