0

私が書いたメソッドでは、クラス'A'のインスタンスを宣言し、そのインスタンスでメソッドを呼び出しています。実行時にメソッドを実行すると、アプリがクラッシュします。'A'のインスタンスを宣言したにもかかわらず、認識されないセレクターがクラス'B'のインスタンスに送信されたと表示されます。どこかでメモリを正しく管理していない可能性があるため、メソッドを別のクラスに送信していると読みましたが、ARCを使用しているので、問題はありません。助けていただければ幸いです!

The error I'm getting:
2011-08-27 01:25:49.859 Intelligenda[49385:bc03] PVC: <HomeViewController: 0x59359e0>
2011-08-27 01:25:49.945 Intelligenda[49385:bc03] -[HomeViewController addNewClass:]: unrecognized selector sent to instance 0x59359e0
2011-08-27 01:25:49.947 Intelligenda[49385:bc03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HomeViewController addNewClass:]: unrecognized selector sent to instance 0x59359e0'

呼び出されているメソッド:

-(IBAction)done:(id)sender{

    [teacherName resignFirstResponder];
    [className resignFirstResponder];

    IntelligendaAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    UINavigationController *nav = delegate.navController;

    [nav popViewControllerAnimated:YES];

    ClassesViewController *classesParentViewController = (ClassesViewController *) nav.topViewController;

    ClassIG *theNewClass = [[ClassIG alloc] init];
    theNewClass.className = className.text;
    theNewClass.teacherName = teacherName.text;

    NSIndexPath *indexPath;


    theNewClass.subject = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;



    // add reminder to array
    NSLog(@"PVC: %@", [classesParentViewController description]);

    [classesParentViewController addNewClass:theNewClass];

}
4

3 に答える 3

1

たとえば、ポインターを宣言NSArray* fredしても、それfredNSArray. 重要なのは、あなたが何を割り当てるかですfred。を割り当てるとNSDateFormatter、それがそれfredです。

于 2011-08-27T03:06:47.930 に答える
1

アプリケーションデリゲートのナビゲーションコントローラーが上にあるというあなたの仮定にClassesViewControllerは明らかに欠陥があります。上に がありHomeViewControllerます。コントローラークラスの他の部分のアクションに接続されたボタンがどこかにあることを考えると、構造は少し複雑に見えるかもしれません。そのため、原因となる理由がたくさんある可能性があります。

最初に確認すること: プログラムでボタンをインスタンス化する場合、ボタンを誤って間違ったコントローラーに追加していませんか? グラフィカル インターフェイス デザイナーを使用してすべてを設計しているが、単一の NIB に保持している場合、ボタンをコピーして貼り付けて、配線先を変更するのを忘れた可能性はありますか?

複数のナビゲーション コントローラーを使用できる場合、アプリケーション デリゲートによって保持されているものが現在画面に表示されていますか?

于 2011-08-27T05:44:37.010 に答える
0

簡単に言うと、型キャストと型変換は objc のプログラマーの課題です。

ここで私の答えを読んでください:

NSNumber* を NSString* expected-parameter に渡しても、コンパイラの警告/エラーは発生しません

...オブジェクトの変数の宣言/キャストが他の言語とどのように異なるか、およびそれらのケースをどのように検出できるかについての詳細については。

于 2011-08-27T03:51:15.287 に答える