4

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

2 回答 2

11

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

@class TopBarViewController;
于 2013-07-18T13:43:21.783 回答
3

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

你有两个选择:

  • 导入定义该类的头文件。
  • 用于@class告诉编译器它是在别处定义的类。

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

于 2013-07-18T13:47:39.913 回答