obj-c标头变量的重复符号

qua*_*ano 2 symbols duplicate-data objective-c

我的印象是,使用#import只会在每次构建时导入一次文件,但在尝试在头文件中定义变量,然后在两个不同的源文件中导入该头文件后,我得到变量的重复符号链接器错误.这怎么可能?

Vla*_*mir 6

#import使标题包含在每个文件中一次,但不是每个构建.因此,您的变量是在导入标题的每个文件中定义的,并且由于整个项目中默认情况下全局变量可见,因此会出现链接器错误.
定义全局变量的正确方法(如果它是您想要做的)是在实现文件中定义它并在其他文件中使用关键字external引用它.
同样将标头中的变量定义为静态将限制其对单个文件的可见性,因此您不会得到任何错误,但可能不是您想要的结果;)