2

我無法編譯我的iPhone項目。在我CType.h我收到錯誤:查找循環引用

Cannot find interface declaration for 'NSObject', superclass of '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 
+0

讓我們來看看你的CType。 – jrtc27

+0

我已更新我的問題以顯示'CType'。 – simonbs

+0

您是否嘗試過清潔和重建?另外,你是否嘗試將類從CType命名爲其他東西? –

回答

2

我傾向於@Hot舔同意。這可能是一個損壞的文件或配置錯誤,因爲理論上你的代碼沒有問題。

這是我的建議:

創建一個新類(比其他CTYPE命名的東西),並在從CTYPE移植代碼到新類。然後刪除您的舊CType文件。如果事情在那個時候起作用,那麼將你的新類重命名爲CType,看看會發生什麼。另外,請仔細檢查您的應用程序prefix.pch文件,以查看哪些標題已導入。

+0

我不知道爲什麼會發生此錯誤。我按照你的建議做了,用一個新名稱創建了一個新文件,並將代碼從'CType'移到了新類中。沒有錯誤。將它重命名爲「CType」會給我帶來錯誤。我很高興它現在有效,但爲什麼會發生這種情況。 – simonbs

+0

我猜測在'CType'的某處有'#define'。或者它是一個在前綴文件中包含的類中定義的類。 –

+0

可能一直是巧合,但我遇到了CType和CTypeView在項目中...不能包括委託在CTypeView,雖然點擊它和'顯示聲明'工作正常。去搞清楚。將CType重命名爲BType後,它工作正常... – MobileVet