0

我被这个问题困住了。我有以下 .h 文件:

#import <UIKit/UIKit.h>

@protocol MapSettingsViewDelegate

- (void)settingsDidUpdate:(BOOL)scheme;

@end

@interface MapSettingsViewController : UIViewController

@property (nonatomic, assign) id <MapSettingsViewDelegate> delegate;
@property (nonatomic, strong) IBOutlet UINavigationBar *navBar;
@property (nonatomic, strong) IBOutlet UINavigationItem *titleItem;
@property (nonatomic, strong) IBOutlet UITableView *TableView;

- (id)init;
- (IBAction)saveAction:(id)sender;

@end

当我声明以下内容时:

@interface MapViewController : UIViewController <MapSettingsViewDelegate>

编译器抱怨以下消息:

Cannot find protocol declaration for 'MapSettingsViewDelegate'

我在同一个项目的其他文件中有相同类型的委托声明,这些文件编译时没有出现故障。我花了最后四个小时试图弄清楚我做错了什么。清理项目并没有什么。

4

3 回答 3

0

您遇到了预处理器问题。你的两个类都相互导入。我认为您可以通过在协议声明下方添加@class 来解决此问题,如下所示;并将您的#import "mapViewController.h" 行移动到 MapSettingsViewController.m 文件中。@class 告诉编译器您将在其他地方(在 .m 文件中)包含类内容。

请注意,在 MapViewController.h 类文件的顶部,您可以像往常一样包含 #import "MapSettingsViewController.h"。希望这有帮助。我自己之前也遇到过同样的问题。

#import <UIKit/UIKit.h>

@protocol MapSettingsViewDelegate

- (void)settingsDidUpdate:(BOOL)scheme;

@end

@class MapViewController 

@interface MapSettingsViewController : UIViewController

@property (nonatomic, assign) id <MapSettingsViewDelegate> delegate;
...
...
于 2014-08-22T16:33:05.593 回答
0

问题解决了。正如这个答案中所建议的,我创建了一个具有不同名称的新类,并复制了上一个类的所有编码。完美地工作。XCode 似乎忘记了一些东西。

于 2013-04-30T17:47:02.010 回答
-2

导入 MapSettingsViewController.h 文件

于 2013-04-30T15:42:28.837 回答