私のiPhoneアプリには、ログインが必要なときにいつでもポップアップするログインビューコントローラーがあります。ユーザーがログインした後、私はこれを持っています:
if ([self.presentingViewController respondsToSelector:@selector(userDidLogin)]) {
[((id)self.presentingViewController) userDidLogin];
} else {
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
しかし、コンパイラーは「セレクターuserDidLoginの既知のインスタンスメソッドがありません」と文句を言い続けました。次に、ログインビューコントローラーにちなんで名付けられたインスタンスメソッドを追加しましたuserDidLogin
が、もちろんそうではありませんでしたがself.presentingViewController
、ビルドは成功しました。
この回避策は私には不合理に感じます。Xcodeのバグですか、それとも意図した動作ですか?後者ですか、その理由は何ですか?