0

我对我的一个视图控制器进行了子类化,并尝试在其他头文件之一中#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 并没有改变。我做了一个干净的构建,它没有改变。

我只能想象有某种循环引用,但我不知道如何处理它。

现在这有点奇怪,因为我最初确实让它工作,只有一些骨架代码,但包括上面显示的内容。在某些时候,当我将设计的其余部分添加到上面显示的两个类中时,它坏了,我不知道为什么。将其剥离回这些基础仍然可以证明问题所在。

有谁知道我在看什么?

4

0 回答 0