【问题标题】:iphone cocoa "error:request for member ____ in something not a structure or union"iphone cocoa“错误:请求成员____不是结构或联合”
【发布时间】:2009-05-23 23:29:47
【问题描述】:

这种方式有效:

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
viewController.parentViewController = self;
self.type1ViewController = viewController;
[self.view insertSubview:viewController.view atIndex:0];
[viewController release];

但是这种方式给了我错误,“请求成员 parentViewController 不是结构或联合”:

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
self.type1ViewController = viewController;
self.type1ViewController.parentViewController = self;
[self.view insertSubview:viewController.view atIndex:0];
[viewController release];

我不明白为什么它应该不同。编译器看到它不喜欢什么? 提前感谢您的帮助

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch uiviewcontroller


    【解决方案1】:

    当您调用self.type1ViewController.parentViewController 而不是viewController.parentViewController 时,它会给您一个错误,因为您将self.type1ViewController 声明为某个超类,而不是type1ViewController。当编译器查看这个声明时,它不会找到 parentViewController 属性,所以它会给你错误。

    在第一个示例中,您的 viewController 仍被声明为 type1ViewController,因此它可以正常工作。如果将它转换为 type1ViewController,它实际上仍然可以在第二个示例中工作,但当然最好只更改声明。

    【讨论】:

    • 虽然不是很明显,但我希望人们能弄清楚,但我应该明确指出,此代码位于“ParentViewController”类中,该类包含 Type1ViewController 类的 type1ViewController 属性。 Type1ViewController 使用 ParentViewController 类型的属性 parentViewController 声明。所以在那种情况下,我不确定我是否完全理解你的回答。它只是双'。困扰编译器的语法?在 ParentViewController 的头文件中,self.type1ViewController 被声明为 Type1ViewController。什么会使其以这种方式工作?
    【解决方案2】:

    如果 ParentViewController 的 type1ViewController 属性声明为 Type1ViewController 类,那么第一行应该是:

    Type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
    

    不是:

    type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil];
    

    注意大写。我实际上有点惊讶这个编译没有错误或警告。

    【讨论】:

      【解决方案3】:

      我还会检查您的 NIB 文件中的 Type1ViewController。我遇到了这样的问题:笔尖上的引用插座中会抛出此错误,我正在寻找我创建的自定义视图控制器以外的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多