它做了这么多次,我没有遇到任何问题,但这次我仍然得到上面的错误,我的相关代码是这样的:
#import "PiecesChoisies.h"
@interface SelectionMobilier : UIViewController {
IBOutlet PiecesChoisies *piecesChoisies;//Error: Expected specifier-qualifier-list before PiecesChoisies
}
@end
提前填写任何建议:)
编辑: 我试试这个:
#import "PiecesChoisies.h"
@interface SelectionMobilier : UIViewController {
IBOutlet NSString *piecesChoisies;//Error: Expected specifier-qualifier-list before PiecesChoisies
}
@end
现在我得到了这个堆栈:
答案 0 :(得分:2)
PiecesChoisies
未被识别为类型。这可能发生,因为它具有周期性依赖性。
以下代码示例说明了该问题。类A和B创建循环依赖项,尝试相互导入。
#import "B.h" // <-- A imports B
@interface A : NSObject
@end
#import "A.h"
@implementation A
@end
#import "A.h" // <-- and B imports A
@interface B : NSObject
@end
#import "B.h"
@implementation B
@end
因为永远不会创建类,所以编译器会将它们视为未知标记,因此错误显示为Expected specifier-qualifier-list before XXX
。换句话说“我期待在XXX之前有意义的事情”。
删除循环依赖项:
@class
)。 #import
从界面移动到实施文件。 类声明告诉编译器“不要担心,我稍后会定义它”,因此标题可以安全导入,因为冲突的定义现在在实现文件中看不见了。
以下示例的结果如下:
@class B; // <---- #import "B.h" replaced with @class B
@interface A : NSObject
@end
#import "A.h"
#import "B.h" // <---- #import "B.h" added
@implementation A
@end
对B级做同样的事情:
@class A; // <---- #import "A.h" replaced with @class A
@interface B : NSObject
@end
#import "B.h"
#import "A.h" // <---- #import "A.h" added
@implementation B
@end
答案 1 :(得分:0)
问题将出现在PiecesChoisies.h中。变化:
IBOutlet PiecesChoisies *piecesChoisies;
到
IBOutlet NSString *piecesChoisies;
将确认问题位于.h文件中。
答案 2 :(得分:0)
如果这是在头文件中,请使用
@class PiecesChoisies;
而不是import语句。在.m文件中导入.h文件。