1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】Objective-Cで「認識できないセレクタがインスタンスに送信されました」エラー

2022-01-12 17:25:09

質問

小さな機能として、以下のコードでボタンを作成し、それにアクションを追加する、というものを実装しています。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom];        
        numberButton.frame = CGRectMake(10, 435, 46, 38);
        [numberButton setImage:[UIImage imageNamed:@"one.png"] forState:UIControlStateNormal];
        [numberButton addTarget:self action:@selector(numberButtonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview: numberButton]; 
    }
return self;
}

-(IBAction)numberButtonClick:(id)sender{
    NSLog(@"---");
}

アクションを呼び出すと、エラーが発生します。

-[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance
 0x3d03ac0 2010-03-16 22:23:58.811
 Money[8056:207] *** Terminating app
 due to uncaught exception
 'NSInvalidArgumentException', reason:'*** -[NSCFDictionary numberButtonClick:]:  unrecognized selector sent to instance 0x3d03ac0'

解決方法は?

ビューコントローラのメモリ管理を適切に行えていないようです。 numberButtonClicked: メソッドが別のオブジェクトに送られ、そのオブジェクトが、ビューコントローラが以前使用していたメモリを使用している...

ビューコントローラーの保持・解放が適切に行われているかを確認します。