【发布时间】:2012-07-01 07:44:59
【问题描述】:
我对 Objective-C 比较陌生,而且我来自 Java 背景,因此我发现指针的概念和不能很好解释的编译错误非常令人生畏。
我有一个使用 jsonControllerDidLinkedInAuth 方法实现委托的类。每当 delegator 向此类发送消息,传递自身和 (NSURL *)url 时,我试图将 url 分配给属性 authUrl,当此操作完成时调用 performSegueWithIdentifier,后者又执行 prepareForSegue(据我对此的理解)。
这似乎不起作用,因为我收到了一个:
App[3278:13517] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UINavigationController setUrlAddress:]:无法识别的选择器发送到实例 0x6acab00”
使用 SIGABRT 终止应用程序的错误消息。
这两个方法都驻留在同一个类中,这是一个 UINavigationController 并指向另一个 UINavigationController。编译器将我指向第二种方法的[vc setUrlAddress:self.authUrl];。
- (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。我假设它一定是某种可见性问题,但我不确定如何解决这个问题。
【问题讨论】:
标签: objective-c ios5 xcode4.3