【问题标题】:parent-child unrecognized selector sent to instance发送到实例的父子无法识别的选择器
【发布时间】:2012-02-13 06:57:10
【问题描述】:

我有一个名为 DataViewController 的子视图和一个名为 RootViewController 的父视图控制器。

每次尝试调用一个函数或设置一个在我的 RootViewController 中定义的属性,从我的子视图中,我都会收到以下错误:

错误:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UIPageViewController setDetailsDataObject:]: 无法识别的选择器发送到实例 0x6aa2df0'

代码:

RootViewController.h:

@property (strong, nonatomic) id detailsDataObject;

DataViewController.m:

((RootViewController *)self.parentViewController).detailsDataObject = self.dataObject;

还有……

错误:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UIPageViewController showDetails]: 无法识别的选择器发送到实例 0x6880db0'

代码:

RootViewController.h:

- (void)showDetails;

RootViewController.m:

- (void)showDetails
{
    NSLog(@"Hello");
}

DataViewController.m:

[((RootViewController *)self.parentViewController) showDetails];

有谁知道如何解决这些异常?

【问题讨论】:

    标签: ios xcode ipad exception parent-child


    【解决方案1】:

    执行 Nsaasert 语句检查 self.parentViewController 是否实际上是 RootViewController 实例

    NSAssert([self.parentViewController isKindOfClass:[RootViewController class]], @"Not RootViewController");
    

    试试这个..如果有任何拼写错误,请更正。

    【讨论】:

    • 感谢您的回复,我对 xcode 和 iOS 开发还很陌生,所以我从未听说过 NSAssert 或如何使用它,尤其是在这种情况下。你能再帮我一些吗?
    • 感谢您的帮助,断言失败:-[DataViewController handleSingleDoubleTap:] 中的断言失败,/Users/kevincuppens/Desktop/Catalogus/Catalogus/DataViewController.m:83 2012-01-19 08: 42:47.935 Catalogus[6063:f803] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不是 RootViewController”
    • 基于此..您的 self.parentViewController 不是 RootViewController 类实例..因此您的代码中存在您尚未发布的错误..在您的源代码中搜索 DataViewController alloc 然后将该功能发布为您问题的更新
    • parentViewController 不是 RootViewController 类实例,感谢您的帮助
    猜你喜欢
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多