我想在几个类中使用 C 风格的结构,但我在其(全局)访问方面遇到了困难。
我在“Utilities”类的头文件中定义了结构体:
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 查看调用)
我做错了什么以及最好的方法是什么?或者最好避免使用此结构作为全局变量?
最佳答案
extern
关键字的意思是“声明而不定义”。换句话说,它是一种显式声明变量或强制声明而不定义变量的方法。但是,当链接器组装您的目标代码时,它需要在某处定义变量,这意味着您必须有一个变量所在的源,而无需使用 extern 关键字 NewStruct *newStruct;
。
通过上述方法,您将此变量视为全局单例。如果您需要多个实例,您应该只使用上面指定的@property
。
关于objective-c - 如何在多个类中使用 C 风格结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35083833/