寻找循环参考

时间:2012-04-30 07:13:25

标签: iphone objective-c circular-dependency circular-reference

我无法编译我的iPhone项目。在我CType.h我收到错误:

  

无法找到'NSObject'的接口声明,超类   'CTYPE'。

这会导致很多其他错误也在同一个头文件中。

我读过这可能是由于我项目中的循环引用。因此,我试图将我的许多标头导入更改为转发声明。还有一些我还没有设法做出前向声明(例如,如果类继承自另一个类,那么它需要导入,如果我正在使用委托。虽然可能有办法解决这个问题。) / p>

我一直在多次搜索我的项目,但我没有设法找到循环引用。找到循环引用是否有任何提示或技巧?我认为这与我的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

实现:

#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

1 个答案:

答案 0 :(得分:2)

我倾向于同意@Hot Licks。这可能是一个损坏的文件或错误配置,因为理论上你的代码没有任何问题。

这就是我的建议:

创建一个新类(名称不是CType)并将代码从CType迁移到新类。然后删除旧的CType文件。如果事情在那时起作用,那么将你的新类重命名为CType,看看会发生什么。另外,请仔细检查您的应用前缀.pch文件,以查看在那里导入的标题。