Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';不同文件中是否有两个同名常量?_Ios_Objective C_Constants_Linker Errors - Fatal编程技术网

Ios Can';不同文件中是否有两个同名常量?

Ios Can';不同文件中是否有两个同名常量?,ios,objective-c,constants,linker-errors,Ios,Objective C,Constants,Linker Errors,所以这对我来说是有道理的,但我觉得奇怪的是,这个“问题”在我修改文件之前很长一段时间都没有问题 我有一个ViewController类,它将常量变量lineWidth定义为 const int lineWidth = 2; 在另一个名为GridView的类中,我定义了相同的常量 const int lineWidth = 2; 这两个类都在这两个类的.m文件中。ViewController.h不导入GridView.h 直到今天我去修改GridView.m时,这才引起任何问题。修改与这个

所以这对我来说是有道理的,但我觉得奇怪的是,这个“问题”在我修改文件之前很长一段时间都没有问题


我有一个ViewController类,它将常量变量
lineWidth
定义为

const int lineWidth = 2;
在另一个名为GridView的类中,我定义了相同的常量

const int lineWidth = 2;
这两个类都在这两个类的.m文件中。ViewController.h不导入GridView.h


直到今天我去修改GridView.m时,这才引起任何问题。修改与这个常量变量无关;我只是在类中添加另一个构造函数。当我构建项目时,我遇到了以下错误:

Apple Mach-O Linker error: duplicate symbol '_lineWidth' in ViewController.o and GridView.o
我以前从未见过这种错误


经过一些尝试和错误,我能够在将其中一个更改为
nLineWidth
后让项目进行构建。现在我想我发现问题是我从ViewController.h导入了GridView.h,然后导入了ViewController.m和GridView.m,这两个变量都定义了这个常量变量,导致了一个错误

我的问题,,
然而,这就是为什么在这一点之前这一切都建立得很好。这是XCode 5.1.1中引入的新标志吗?我发现有趣的是,在我开始修改该文件之前,这不是一个问题。当需要重建该文件时,问题出现了。

将它们都更改为:

static const int lineWidth = 2;
这将使每个文件都特定于它所定义的文件。每个都可以有自己的价值,而不影响另一个。如果没有
static
,它们都被声明为app globals,并且有两个同名的应用程序不起作用

如果需要一个共享全局文件,请将以下内容添加到.h文件中:

extern const int lineWidth;
然后将以下内容添加到一个(对应的).m文件中:


这将创建一个可通过导入.h文件在任何地方使用的全局文件。

将它们更改为:

static const int lineWidth = 2;
这将使每个文件都特定于它所定义的文件。每个都可以有自己的价值,而不影响另一个。如果没有
static
,它们都被声明为app globals,并且有两个同名的应用程序不起作用

如果需要一个共享全局文件,请将以下内容添加到.h文件中:

extern const int lineWidth;
然后将以下内容添加到一个(对应的).m文件中:


这将创建一个可通过导入.h文件在任何地方使用的全局文件。

将它们更改为:

static const int lineWidth = 2;
这将使每个文件都特定于它所定义的文件。每个都可以有自己的价值,而不影响另一个。如果没有
static
,它们都被声明为app globals,并且有两个同名的应用程序不起作用

如果需要一个共享全局文件,请将以下内容添加到.h文件中:

extern const int lineWidth;
然后将以下内容添加到一个(对应的).m文件中:


这将创建一个可通过导入.h文件在任何地方使用的全局文件。

将它们更改为:

static const int lineWidth = 2;
这将使每个文件都特定于它所定义的文件。每个都可以有自己的价值,而不影响另一个。如果没有
static
,它们都被声明为app globals,并且有两个同名的应用程序不起作用

如果需要一个共享全局文件,请将以下内容添加到.h文件中:

extern const int lineWidth;
然后将以下内容添加到一个(对应的).m文件中:


这将创建一个可通过导入.h文件在任何地方使用的全局文件。

和boom!它起作用了。很不错的。在我修改文件之前,你对我的问题有什么答案吗?这个项目最初是在XCode 4.0中构建的。谢谢你的信息!现在我不会再犯那个错误了!:)轰!它起作用了。很不错的。在我修改文件之前,你对我的问题有什么答案吗?这个项目最初是在XCode 4.0中构建的。谢谢你的信息!现在我不会再犯那个错误了!:)轰!它起作用了。很不错的。在我修改文件之前,你对我的问题有什么答案吗?这个项目最初是在XCode 4.0中构建的。谢谢你的信息!现在我不会再犯那个错误了!:)轰!它起作用了。很不错的。在我修改文件之前,你对我的问题有什么答案吗?这个项目最初是在XCode 4.0中构建的。谢谢你的信息!现在我不会再犯那个错误了!:)