xCode: Objective C: 重复符号错误
xCode: Objective C: duplicate symbol error
在文件 CarArray(没有任何扩展名)中,我有这样的数组(这是一个非常简化的版本):
NSString *cars[5][3] = {
{@"1A", @"1B", @"1C"},
{@"2A", @"2B", @"2C"},
{@"3A", @"3B", @"3C"},
{@"4A", @"4B", @"4C"},
{@"5A", @"5B", @"5C"}
}
现在我想从多个文件中的数组中读取数据,所以我只需使用 #import "CarArray"
并且我使用循环读取数据。然后我得到这样的错误:
duplicate symbol _cars in:
/Users/Adam/Library/Developer/Xcode/DerivedData/Auto_Center-hgjlsqanvyynncgyfzuorxwchqov/Build/Intermediates/Auto Center.build/Debug-iphonesimulator/Auto Center.build/Objects-normal/i386/DetailViewController.o
/Users/Adam/Library/Developer/Xcode/DerivedData/Auto_Center-hgjlsqanvyynncgyfzuorxwchqov/Build/Intermediates/Auto Center.build/Debug-iphonesimulator/Auto Center.build/Objects-normal/i386/ModelListViewController.o
ld: 1 duplicate symbol for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我该如何解决这个问题?
Now I want to read the data from the array in multiple files so I simply use #import "CarArray"
这是从多个位置访问数组数据的不正确方法,因为它会在多次使用文件的情况下创建多个定义。
共享数组的一种方法是提供带有声明的 header 和带有实现的 .m 文件:
CarArray.h:
extern NSString *cars[5][3];
CarArray.m:
#import "CarArray.h"
NSString *cars[5][3] = {
{@"1A", @"1B", @"1C"},
{@"2A", @"2B", @"2C"},
{@"3A", @"3B", @"3C"},
{@"4A", @"4B", @"4C"},
{@"5A", @"5B", @"5C"}
}
在您希望使用 cars
的文件中使用 #import "CarArray.h"
。
另一种方法是制作一个 class 来包装您的全局变量,并提供一个 class 方法来访问数组。
您应该在头文件 ("CarArray.h") 中声明 您的数组,但定义并初始化 它的值在单独的实现文件 ("CarArray.m").
在文件 CarArray(没有任何扩展名)中,我有这样的数组(这是一个非常简化的版本):
NSString *cars[5][3] = {
{@"1A", @"1B", @"1C"},
{@"2A", @"2B", @"2C"},
{@"3A", @"3B", @"3C"},
{@"4A", @"4B", @"4C"},
{@"5A", @"5B", @"5C"}
}
现在我想从多个文件中的数组中读取数据,所以我只需使用 #import "CarArray"
并且我使用循环读取数据。然后我得到这样的错误:
duplicate symbol _cars in:
/Users/Adam/Library/Developer/Xcode/DerivedData/Auto_Center-hgjlsqanvyynncgyfzuorxwchqov/Build/Intermediates/Auto Center.build/Debug-iphonesimulator/Auto Center.build/Objects-normal/i386/DetailViewController.o
/Users/Adam/Library/Developer/Xcode/DerivedData/Auto_Center-hgjlsqanvyynncgyfzuorxwchqov/Build/Intermediates/Auto Center.build/Debug-iphonesimulator/Auto Center.build/Objects-normal/i386/ModelListViewController.o
ld: 1 duplicate symbol for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我该如何解决这个问题?
Now I want to read the data from the array in multiple files so I simply use
#import "CarArray"
这是从多个位置访问数组数据的不正确方法,因为它会在多次使用文件的情况下创建多个定义。
共享数组的一种方法是提供带有声明的 header 和带有实现的 .m 文件:
CarArray.h:
extern NSString *cars[5][3];
CarArray.m:
#import "CarArray.h"
NSString *cars[5][3] = {
{@"1A", @"1B", @"1C"},
{@"2A", @"2B", @"2C"},
{@"3A", @"3B", @"3C"},
{@"4A", @"4B", @"4C"},
{@"5A", @"5B", @"5C"}
}
在您希望使用 cars
的文件中使用 #import "CarArray.h"
。
另一种方法是制作一个 class 来包装您的全局变量,并提供一个 class 方法来访问数组。
您应该在头文件 ("CarArray.h") 中声明 您的数组,但定义并初始化 它的值在单独的实现文件 ("CarArray.m").