私はObjective-Cに比較的慣れておらず、Javaのバックグラウンドを持っているので、ポインターの概念と、十分に説明されていないコンパイルエラーは非常に気が遠くなります。
jsonControllerDidLinkedInAuthメソッドを使用してデリゲートを実装するクラスがあります。委任者がこのクラスにメッセージを送信し、それ自体と(NSURL *)urlを渡すときはいつでも、この操作が終了したときにプロパティauthUrlにURLを割り当てようとしています。これにより、performSegueWithIdentifierが呼び出され、prepareForSegueが実行されます(これについての私の理解が懸念されます)。
私が受け取っているので、これはうまくいかないようです:
App [3278:13517] *キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています、理由:'-[UINavigationController setUrlAddress:]:認識されないセレクターがインスタンス0x6acab00に送信されました'
SIGABRTでアプリケーションを終了するエラーメッセージ。
両方のメソッドは同じクラスにあります。これはUINavigationControllerであり、別のUINavigationControllerを指します。コンパイラ[vc setUrlAddress:self.authUrl];
は、2番目のメソッドのを指摘します。
- (void)jsonControllerDidLinkedInAuth:(JsonController *)controller :(NSURL *)url {
authUrl = url;
if (authUrl != nil) {
[self performSegueWithIdentifier:@"LinkedInAuth" sender:self];
} else {
NSLog(@"Auth URL is null");
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"LinkedInAuth"]) {
// Get destination view
LinkedInViewController *vc = [segue destinationViewController];
NSLog(@"The auth url from prepareForSegue in SignupViewControlle: %@", self.authUrl);
[vc setUrlAddress:self.authUrl];
}
}
問題のように思われるのは、何らかの理由で、現在のクラスのauthUrlプロパティにアクセスできないことです。authUrl、[self authUrl]、self.authUrlを試してみましたが、どれもうまくいかないようです。プロパティは合成されますが、ちょっとしたヒントにも気づきました。「UINavigationController setUrlAddress」、これは上記のメソッドで定義されているようなLinkedInViewControllerではないでしょうか。(LinkedInViewController)[segue destinationViewController]をキャストしようとしましたが、ポインターにキャストできないことを通知するメッセージが表示されます。
どんな助けでも大歓迎です。読んでくれてありがとう。
編集1:setUrlAddressのすぐ上のNSLogはself.authUrlを返します。なんらかの視認性の問題だと思いますが、どうやって解決したらいいのかわかりません。