如何在多个类中使用c风格的结构

时间:2016-01-29 11:48:32

标签: objective-c c struct

我想在几个类中使用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查看调用)

我做错了什么,最好的方法是什么?或者最好避免将此结构用作全局变量?

1 个答案:

答案 0 :(得分:0)

extern关键字表示“声明没有定义”。换句话说,它是一种显式声明变量或强制声明而无需定义的方法。但是当链接器组装你的目标代码时,它需要在某处定义变量,这意味着你必须有一个变量所在的源而没有extern关键字NewStruct *newStruct;

使用上述方法,您将此变量视为全局单例。如果您需要多个实例,则应该使用上面指定的@property