2012-03-16 87 views
0

我的類標題找不到在另一個標題「外部」定義的協議。 的結構如下:協議成立ObjC

x1.h具有協議
x2.h進口x1.h
x3.h進口x2.h

的問題是,即x3.h無法找到協議。

我想避免導入x1.h在x3.h減少重複

的錯誤是「解析問題預計一型」

我有一個運行狀態。但是當我將一些#import從x3.m複製到x2.h後,出現了100個錯誤,包括Unknown Type和Parse Issue。即使在任意類中,例如(y42.m)是錯誤的。奇怪的是,該類y42.m導入x3.h並不知道x3。

感謝您的閱讀!

更多信息:x1.h內容

@protocol aDelegate <NSObject> 

- (void)callback; 

@end 

的x2.h內容

#import "x1.h" 

typedef enum { 
    kOne, 
    kTwo, 
    kThree, 
}States; 

的x3.h內容

#import "x2.h" 

@interface x3 : NSObject <aDelegate> 
{ 
    States anyState; 
} 

@end 

狀態未知和aDelegate不明。原因也是未知的。

+0

坦率地說,我不太明白。你說你沒有找到協議聲明,但是x1。h「有協議」,你相信你可以通過在x2.h中包含x1.h來解決它(你想避免出於很好的理由)。但是,如果該協議在x1.h中,爲什麼不找到它? – 2012-03-16 16:53:46

+2

也許會提供編譯器錯誤和代碼,以便我們可以確切地看到你在做什麼。 – nil 2012-03-16 17:04:09

回答

0

我認爲,我們需要有關這些錯誤的詳細信息,但我固定一個類似的問題,宣告協議在一個單獨的頭(只有協議)(x4.h),並在需要的類導入。有了這些信息,唯一的建議。

0

你必須關閉與

@end 

X3宣言和你的枚舉被命名爲美國,不國家

否則,我沒有看到與此代碼的任何問題。

0

我也有類似的問題,同樣的錯誤消息。簡答:我有一個循環進口。

因此,解決辦法是爲LuisEspinoza建議。

龍答:有一個導入一大堆通常使用的.h文件.h文件(A.H)。它還定義了一大堆常用的枚舉。我需要其中一個引入.h文件(b.h)中的枚舉之一。所以,沒有想到,我在b.h中導入了「a.h」。 XCode將此報告爲「Parse Issue Expected a type」的衆多實例。我將這些枚舉提取到c.h中,並在a.h和b.h中導入,這就是Luis建議的。

而且學到的教訓是,當XCode的報告「解析問題預計一型」,你應該考慮找一個圓形進口。