我对我的一个视图控制器进行了子类化,并尝试在其他头文件之一中#import 新类的头文件。
一旦我包含该#import,整个构建就会变得疯狂,许多类中都会出现错误,例如:
- 找不到协议声明...
- 找不到接口声明...
- 未知类型名称...
- 不兼容的指针类型...
这些错误都在与新类、它的超类或与导入的文件没有直接关系的文件中。
一旦我删除#import,构建就很好了。
这是文件 ReadOnlySearchVC.h 和 ReadOnlySearchVC.m 中的子类定义。可以看出,这只是我最初创建新类时 Xcode 创建的模板。
子类的头文件:
#import "AdvancedSearchFormVC.h"
@interface ReadOnlySearchVC : AdvancedSearchFormVC
@end
和子类的代码文件:
#import "ReadOnlySearchVC.h"
@interface ReadOnlySearchVC ()
@end
@implementation ReadOnlySearchVC
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
这是头文件,我在ResultHeaderView类中导入子类ReadOnlySearchVC
引用类的头文件:
#import <UIKit/UIKit.h>
#import "ReadOnlySearchVC.h" // this is the offending line
@class SearchTerms;
@class DataInterfaceObject;
@class MapController;
@protocol resultsHeaderDelegate
- (void) collapseSection:(NSInteger) section;
- (void) expandSection:(NSInteger) section;
@optional
- (void) deleteSection:(NSInteger) section;
- (void) headerDeleteButtonWillShow;
- (void) headerDeleteButtonDidHide;
@end
@interface ResultsHeaderView : UIView <UIGestureRecognizerDelegate>{
... the rest of the file ...
第二行,#import "ReadOnlySearchVC.h"
是制造问题。
我将 Xcode 从 4.3.1 更新到 4.3.3 并没有改变。我做了一个干净的构建,它没有改变。
我只能想象有某种循环引用,但我不知道如何处理它。
现在这有点奇怪,因为我最初确实让它工作,只有一些骨架代码,但包括上面显示的内容。在某些时候,当我将设计的其余部分添加到上面显示的两个类中时,它坏了,我不知道为什么。将其剥离回这些基础仍然可以证明问题所在。
有谁知道我在看什么?