1

このような質問には多くの回答がありましたが、どれも私にとってはうまくいきませんでした。基本的に、ラベルとボタンを持つ非常に単純な 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' が原因でアプリを終了しています。スローコールスタック: 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)

うまくいけば、それで十分な情報です。ありがとうございました!

4

1 に答える 1

3
      '-[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 で例外ブレークポイントを定義する必要があります。

  1. 左側のペインの [ブレークポイント] タブに移動します。

  2. ペインの下部に+アイコンがあります。

  3. それをクリックして、[例外ブレークポイントの追加] を選択します。

  4. 確認して完了です。

これで、デバッガーは sigabrt を引き起こしている実際の行で停止するため、オブジェクトの状態を調べることができます。

于 2013-01-20T19:16:52.527 に答える