Iphone 查找循环引用

Iphone 查找循环引用,iphone,objective-c,circular-dependency,circular-reference,Iphone,Objective C,Circular Dependency,Circular Reference,我无法编译我的iPhone项目。在我的CType.h中,我得到了错误: 找不到的超类“NSObject”的接口声明 “CType” 这会导致许多其他错误,这些错误也位于同一头文件中 我已经读到,这可能是由于在我的项目循环引用。因此,我尝试将许多头导入更改为转发声明。还有一些我还没有成功地进行转发声明(例如,如果该类从另一个类继承,那么它需要导入,如果我正在使用委托。不过,可能有办法解决这个问题) 我已经搜索了我的项目多次,但我没有找到循环引用。找到循环引用有什么提示或技巧吗?我原以为这与我的CT

我无法编译我的iPhone项目。在我的
CType.h
中,我得到了错误:

找不到的超类“NSObject”的接口声明 “CType”

这会导致许多其他错误,这些错误也位于同一头文件中

我已经读到,这可能是由于在我的项目循环引用。因此,我尝试将许多头导入更改为转发声明。还有一些我还没有成功地进行转发声明(例如,如果该类从另一个类继承,那么它需要导入,如果我正在使用委托。不过,可能有办法解决这个问题)

我已经搜索了我的项目多次,但我没有找到循环引用。找到循环引用有什么提示或技巧吗?我原以为这与我的
CType
有关,但事实似乎并非如此

编辑:

这是我的CType:

接口:

#import <Foundation/Foundation.h>

@interface CType : NSObject

/*
 * Type ID
 */
@property (nonatomic, assign) NSInteger typeId;

/*
 * Type
 */
@property (nonatomic, strong) NSString *type;

/*
 * Initialize with type ID and type
 */
- (id)initWithId:(NSInteger)typeId type:(NSString *)type;

/*
 * Type with type ID and type
 */
+ (CType *)typeWithId:(NSInteger)typeId type:(NSString *)type;

@end

我倾向于同意“热舔”。这很可能是一个损坏的文件或错误的配置,因为理论上你的代码没有问题

这是我的建议:


创建一个新类(命名为CType以外的类)并将代码从CType迁移到新类。然后删除旧的CType文件。如果此时一切正常,那么将新类重命名为CType,看看会发生什么。另外,请仔细检查您的apps prefix.pch文件,查看其中导入了哪些标题。

我已将问题更新为显示
CType
。您是否尝试过清理和重建?另外,您是否尝试过将类从CType命名为其他名称?您的实现模块是a.m吗?您是否正确配置了前缀文件?听起来你的构建环境有点混乱。“一个简单的案例行得通吗?@MichaelFredrick我尝试过清理和重建,但没有成功。我还没有尝试重命名该类,但我不认为
CType
以任何方式被保留。@HotLicks我的实现在一个.m文件中,是的。您对前缀文件的配置是什么意思?对“更简单的情况”是什么意思?我不知道为什么会发生此错误。我按照你的建议做了,用新名称创建了一个新文件,并将代码从
CType
移动到新类中。没有错误。将其重命名为
CType
会给我带来错误。我很高兴它现在起作用了,但我不明白为什么会发生这种情况。我猜在某个地方有一个
#define
来定义
CType
。或者它是在前缀文件中包含的某些内容中定义的类。可能是巧合,但我在项目中遇到了CType和CTypeView。。。无法在CTypeView中包含该委托,尽管单击该委托并“显示声明”效果良好。如图所示。将CType重命名为BType后,效果很好。。。
#import "CType.h"

@implementation CType

/* Create setters and getters */
@synthesize typeId;
@synthesize type;

/* Initialize with type ID and type */
- (id)initWithId:(NSInteger)_typeId type:(NSString *)_type
{
    if (self = [super init])
    {
        self.typeId = _typeId;
        self.type = _type;
    }

    return self;
}

/* Type with type ID and type */
+ (CType *)typeWithId:(NSInteger)typeId type:(NSString *)type
{
    return [[CType alloc] initWithId:typeId type:type];
}

@end