0

在文件 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)

我该如何解决这个问题?

4

2 回答 2

5

现在我想从多个文件中的数组中读取数据,所以我只需使用#import "CarArray"

这是从多个位置访问数组数据的错误方式,因为在您多次使用文件的情况下,它会创建多个定义。

共享数组的一种方法是提供带有声明的标头和带有实现的 .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"}
}

#import "CarArray.h"在您希望使用的文件中使用cars.

另一种选择是创建一个类来包装你的全局变量,并提供一个类方法来访问数组。

于 2015-01-11T13:08:06.403 回答
0

您应该在头文件(“CarArray.h”)中声明您的数组,但使用单独的实现文件(“CarArray.m”)中的值定义和初始化它。

于 2015-01-11T13:08:35.303 回答