jjzjj

ios - ld : 1 duplicate symbol for architecture arm64 : two same variables in two different classes?

coder 2024-01-14 原文

我来自 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/

有关ios - ld : 1 duplicate symbol for architecture arm64 : two same variables in two different classes?的更多相关文章

随机推荐