我来自 Java 世界,所以我的问题可能看起来很愚蠢。
为什么当我在两个不同的实现类中有相同的变量(NSString 对象)名称时编译器会报错? 默认情况下它们不是私有(private)的吗? 是禁止的吗?是否有任何build设置要更改?
毕竟,因为我在这里不使用 iVar,所以我是否以 C/C++ 风格声明了这个变量?
例子: 示例类.h
#import <Foundation/Foundation.h>
@interface SampleClass : NSObject
{
...
}
@end
另一个类.h
#import <Foundation/Foundation.h>
@interface AnotherClass : NSObject
{
...
}
@end
样本类.m
#import "SampleClass.h"
@implementation SampleClass
NSString *myVar;
@end
另一个类.m
#import "AnotherClass.h"
@implementation AnotherClass
NSString *myVar;
@end
关于 myVar 变量的编译器响应: ld:架构 arm64 的 1 个重复符号
编辑: -1 ;(( 世界可以如此不宽容......
编辑2 感谢您的支持!还有希望 ;)
最佳答案
您正在定义全局变量(这些不是您类中的变量!)。要使它们对您的文件“私有(private)”,请使用 static 关键字:
static NSString *myVar;
如果您想要实例变量,您需要像这样定义它们:
@implementation SampleClass {
NSString *myVar;
}
@end
(注意 @implementation 之后的 { 和 }。)
关于ios - ld : 1 duplicate symbol for architecture arm64 : two same variables in two different classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869759/