Objective-C @implementation变量可见性

时间:2012-08-07 10:31:08

标签: objective-c variables implementation

我有两个类,其实现包含一个名为“geometryCoords”的数组,在“Corridor”类中,它在声明中初始化,在“RhombusArray”中,它是在“init”方法中完成的:

GLfloat _geometryCoords[]={/*Values here*/};

GLfloat _geometryCoords[];
...//In the init method
_geometryCoords = (GLfloat*)malloc(somevalue);
for(...){/*Assignment*/}

在调试此方法时,我注意到“geometryCoords”在传递初始化代码之前具有第一个类'数组的值。更改“RhombusArray”中的数组声明后:

GLfloat _geometryCoords[];

GLfloat* _geometryCoords;

我收到了“Apple Mach-o链接器错误:/BlaBla/Corridor.o和/BlaBla/RhombusArray.o中的重复符号_geometryCoords”。 这两个类的标头都导入到.mm文件中,并删除其中一个解决了冲突。 我该如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

这两个数组都必须具有全局范围(即它们在函数外部和类接口之外声明),以便获取链接器错误和另一个问题。声明他们是这样的:

static GLfloat _geometryCoords[]={/*Values here*/};
//^^^^ this is the new bit

static关键字使符号仅在声明它们的编译单元(.m文件)中可见。