实施代表时的“预期类型”

时间:2013-07-18 13:41:27

标签: ios objective-c appdelegate

我只编写了一段代码,但是出现了“预期类型@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

2 个答案:

答案 0 :(得分:10)

在顶部添加以下内容。由于协议TopBarDelegate在类TopBarViewController之上定义,因此在您定义协议时,编译器不知道有一个名为TopBarViewController的类。这一行告诉它确实存在一个在某处定义了该名称的类。

@class TopBarViewController;

答案 1 :(得分:3)

问题在于,在解析该文件时,编译器不知道TopBarViewController是什么。它只是一个随机令牌,它不知道如何处理。该类在不同的文件中定义,因此编译器在解析此类时不会查看它。

您有两种选择:

  • 导入定义该类的头文件。
  • 使用@class告诉编译器它是在其他地方定义的类。

一般来说,后一种选择更好,因为它代表编译器的工作量较少,不能导致循环导入。