我只编写了一段代码,但是出现了“预期类型@line - (void)backButtonTapped:(TopBarViewController *)topBarViewController;
这有什么问题?
@protocol TopBarDelegate
- (void)backButtonTapped:(TopBarViewController *) topBarViewController;
@end
@interface TopBarViewController : UIViewController
{
}
@property (assign, nonatomic) id <TopBarDelegate> delegate;
-(void) backButtonPressed:(id)sender;
-(void) menuButtonPressed:(id)sender;
@end
答案 0 :(得分:10)
在顶部添加以下内容。由于协议TopBarDelegate
在类TopBarViewController
之上定义,因此在您定义协议时,编译器不知道有一个名为TopBarViewController
的类。这一行告诉它确实存在一个在某处定义了该名称的类。
@class TopBarViewController;
答案 1 :(得分:3)
问题在于,在解析该文件时,编译器不知道TopBarViewController
是什么。它只是一个随机令牌,它不知道如何处理。该类在不同的文件中定义,因此编译器在解析此类时不会查看它。
您有两种选择:
@class
告诉编译器它是在其他地方定义的类。一般来说,后一种选择更好,因为它代表编译器的工作量较少,不能导致循环导入。