只能通过消息传递访问属性(Objective-c)

时间:2010-02-01 07:00:16

标签: objective-c cocoa-touch

由于某种原因,我无法将视图作为属性访问

MyAppDelegate *APPDELEGATE=((MexicanWaveAppDelegate*)[[UIApplication sharedApplication] delegate]);
[APPDELEGATE.viewController view];
APPDELEGATE.viewController.view; //Accessing unknown 'view' component of a property

我已经能够将视图作为其他视图控制器的属性进行访问,并且它是doc中的属性。你能解释一下这种行为吗?

2 个答案:

答案 0 :(得分:1)

APPDELEGATE.viewController 的类型不是 UIViewController (或派生类),或者您没有包含 MexicanWaveAppDelegate 的标题(MexicanWaveAppDelegate.h)

答案 1 :(得分:0)

问题实际上是因为我的app委托.h文件(MexicanWaveAppDelegate.h)未包含有关视图控制器(MexicanWaveViewController)的类型的信息。这意味着导入MexicanWaveAppDelegate.h的任何类都将其MexicanWaveViewController属性作为“opaque类型”(一种关于其未知信息的类型)。

可以通过以下任一方式更改MexicanWaveAppDelegate.h来解决此问题:

  • 导入“MexicanWaveViewController.h”
  • 为MexicanWaveViewController提供转发声明