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


我该如何解决这个问题?

最佳答案

现在,我想从多个文件中读取数组中的数据,因此我只需使用#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

另一个选择是制作一个类来包装全局变量,并提供用于访问数组的类方法。

关于ios - xCode: objective-c :重复符号错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27887367/

10-10 22:24