gpt4 book ai didi

objective-c - 不同类中的同名实例变量导致编译错误

转载 作者:行者123 更新时间:2023-12-02 09:24:45 25 4
gpt4 key购买 nike

我有两个 objc.m 类,我们称它们为 controller1.m 和 controller2.m。在 controller1.m 和 controller2.m 中,我都有 UIAlertController 的实例,如下所示:

controller1.m

@implementation controller1
UIAlertController *alertController;
//more code
@end

controller2.m

@implementaion controller2
UIAlertController *alertController;
//more code
@end

当我尝试构建项目时,出现错误

linker command failed with exit code 1 (use -v to see invocation)

错误日志是这样的

duplicate symbol _alertController in:
/Users/.../Xcode/DerivedData/AppName-cdtbqibmmbsosrdeyqughefeazaa/Build/Intermediates/AppName.build/Debug-iphonesimulator/AppName.build/Objects-normal/x86_64/controller1.o
/Users/.../Xcode/DerivedData/AppName-cdtbqibmmbsosrdeyqughefeazaa/Build/Intermediates/AppName.build/Debug-iphonesimulator/AppName.build/Objects-normal/x86_64/controller2.o

我现在更改了实例变量的名称并且它有效...为什么我必须这样做? Xcode 是否意识到这些变量以相同的方式使用(由于它们的名称),并且我应该以某种方式在全局范围内声明它们?

最佳答案

你的问题是那些变量不是实例变量。它们是全局变量。

要使它们成为实例变量,它们需要位于 @implementation block 的花括号中,如下所示:

@implementation controller1 {
UIAlertController *alertController;
}

//more code

@end

关于objective-c - 不同类中的同名实例变量导致编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com