我想在几个类中使用c风格的结构,但我正在努力实现其(全局)访问。
我在“Utilities”类的头文件中定义了struct:
typedef struct
{
int length;
SInt16 *someData;
} NewStruct;
+ (NewStruct *)initStructWithValue:(int)length;
在另一个类中,我使用Utitlities的类方法初始化此结构:
@property (nonatomic, assign) NewStruct *newStruct;
_newStruct = [Utilities initStructWithValue: 5]
现在我想在其他类中使用newStruct。但是,当我把
extern NewStruct *newStruct;
在标题文件的顶部它不起作用,似乎我无法访问newStruct。
我收到错误:链接器命令失败,退出代码为1(使用-v查看调用)
我做错了什么,最好的方法是什么?或者最好避免将此结构用作全局变量?
答案 0 :(得分:0)
extern
关键字表示“声明没有定义”。换句话说,它是一种显式声明变量或强制声明而无需定义的方法。但是当链接器组装你的目标代码时,它需要在某处定义变量,这意味着你必须有一个变量所在的源而没有extern关键字NewStruct *newStruct;
。
使用上述方法,您将此变量视为全局单例。如果您需要多个实例,则应该使用上面指定的@property
。