Objective c iOS-属性';视图';在转发类对象中找不到

Objective c iOS-属性';视图';在转发类对象中找不到,objective-c,viewcontroller,Objective C,Viewcontroller,我刚开始使用Objective-C。我的代码不断给出错误:在转发类对象“startPageViewController”中找不到属性“view”。我搞不懂那是什么!这是我的密码 startPageViewController.h- #import <UIKit/UIKit.h> @class searchResultsViewController; @class startPageViewController; @interface startPageViewController

我刚开始使用Objective-C。我的代码不断给出错误:在转发类对象“startPageViewController”中找不到属性“view”。我搞不懂那是什么!这是我的密码

startPageViewController.h-

#import <UIKit/UIKit.h>

@class searchResultsViewController;
@class startPageViewController;

@interface startPageViewController : UIViewController

- (IBAction)switchViews:(id)sender;

@property (strong, nonatomic) IBOutlet UITextField * searchterm;
@property (nonatomic, retain) startPageViewController *blueViewController;
@property (nonatomic, retain) searchResultsViewController *yellowViewController;

@end
#import <UIKit/UIKit.h>

@interface searchResultsViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIWebView *googleResults;
@property (strong, nonatomic) IBOutlet UIWebView *bingResults;
@property (strong, nonatomic) IBOutlet UIWebView *amazonResults;
@property (strong, nonatomic) IBOutlet UIWebView *ebayResults;

@end
提前谢谢


顺便说一下,请不要太复杂。我只有12岁

如果包含头文件,则不需要转发声明。因此,您可以删除:

@class searchResultsViewController;
@class startPageViewController;

如果包含头文件,则不需要转发声明。因此,您可以删除:

@class searchResultsViewController;
@class startPageViewController;

问题在于
startPageViewController.m
文件中的无关
@class
声明。它们隐藏了从
#import
语句中获得的完整定义

您应该在.h文件中只包含
@class
转发声明(就像您已经在做的那样)


另一个建议是,在包括Objective-C在内的许多编程语言中,类名以大写字母开头是标准做法。变量和方法名称应以小写字母开头。这样做,与其他人一起,使代码更易于阅读。

问题在于
startPageViewController.m
文件中的无关
@class
声明。它们隐藏了从
#import
语句中获得的完整定义

您应该在.h文件中只包含
@class
转发声明(就像您已经在做的那样)


另一个建议是,在包括Objective-C在内的许多编程语言中,类名以大写字母开头是标准做法。变量和方法名称应以小写字母开头。这样做,与其他人一起,使代码更容易阅读。

您在哪里使用
blueViewController.view
?在代码中看不到。您应该发布
blueViewController
类。另一件事是,您应该始终使用大写字母作为类名称,如
BlueViewController
blueViewController
表示变量名。除了语法之外,在SwitchView方法中删除self.view(然后在现在孤立的视图中添加子视图)看起来是个错误。刚刚注意到“我只有12岁”。。。你12岁就开始写代码了,我敢打赌你能处理很多复杂的事情。良好开端的荣誉!:-)看起来
blueViewController
是同一类的对象。您应该更改
switchview
方法。现在你正在删除self.view,这是你不应该在那里做的。只需在self.view上添加另一个视图即可。@danh,并且提出的问题比一些大学生更好。您在哪里使用
blueViewController.view
?在代码中看不到。您应该发布
blueViewController
类。另一件事是,您应该始终使用大写字母作为类名称,如
BlueViewController
blueViewController
表示变量名。除了语法之外,在SwitchView方法中删除self.view(然后在现在孤立的视图中添加子视图)看起来是个错误。刚刚注意到“我只有12岁”。。。你12岁就开始写代码了,我敢打赌你能处理很多复杂的事情。良好开端的荣誉!:-)看起来
blueViewController
是同一类的对象。您应该更改
switchview
方法。现在你正在删除self.view,这是你不应该在那里做的。只需在self.view上添加另一个视图。@danh,并提出比一些大学生更好的问题。我认为你是对的,这些都是不必要的,但它们会产生编译器错误吗?我刚刚尝试将多余的@class MyClass添加到MyClass.m和.h中,这既不会导致编译器警告,也不会导致错误。如果要在定义类之前引用类,请在接口(.h)文件中使用类转发声明。它未在实现(.m)文件中使用。看:是的,我明白。你正确地指出它们在.m中是无关的。但是OP试图解决一个编译器错误,我认为你的建议解决不了这个问题。(声明是不必要的,但无害的)。我认为你是对的,这些声明是不必要的,但它们会产生编译器错误吗?我刚刚尝试将多余的@class MyClass添加到MyClass.m和.h中,这既不会导致编译器警告,也不会导致错误。如果要在定义类之前引用类,请在接口(.h)文件中使用类转发声明。它未在实现(.m)文件中使用。看:是的,我明白。你正确地指出它们在.m中是无关的。但是OP试图解决一个编译器错误,我认为你的建议解决不了这个问题。(声明是不必要的,但无害的)。
@class searchResultsViewController;
@class startPageViewController;