如何使用 extern 关键字在 IOS 中定义全局变量?

How to use extern keyword to define global ivars in IOS?

如何使用 extern 关键字来定义全局变量,有人知道这个问题吗?在此先感谢。

评论更新:

好的,我从网上搜索到我应该在.h文件中声明变量,如下所示,

int name;
@interface testGlobal : NSObject
@end

当我想在一个 .m 文件中使用它时,我应该像下面这样写,

extern int name;
@implementation ViewController

我在实现文件中使用的时候出现了如下错误

duplicate symbol _name in:
/Users/jay_Gao/Library/Developer/Xcode/DerivedData/Audition-bahpwhcmpnzxppajcliyuhtuaywz/Build/Intermediates/Audition.build/Debug-iphonesimulator/Audition.build/Objects-normal/x86_64/Test.o
/Users/jay_Gao/Library/Developer/Xcode/DerivedData/Audition-bahpwhcmpnzxppajcliyuhtuaywz/Build/Intermediates/Audition.build/Debug-iphonesimulator/Audition.build/Objects-normal/x86_64/testGlobal.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)'
, 你能解释一下吗? – 我通过删除成功构建 #import "testGlobal.h" 来自 test.m。但是,如果我想在其他文件中导入该文件 testGlobal.h ,我做不到吗?我应该只在 AppDelegate.h 中声明全局变量吗?因为在其他文件上将导入 AppDelegate.h?

我从我这边测试了它,我可以成功构建它,但我感到困惑,为什么要以这种方式声明全局变量。变量在任何代码块之外。

您需要在接口中将其外部化并在您的 testGlobal class 的实现中声明:

//Global.h
extern int xyz;

@interface Global : NSObject
@end

//Global.m
#import "Global.h"

int xyz = 123;
@implementation Global
@end

//ViewController.m
#import "ViewController.h"
#import "Global.h"

@implementation ViewController

- (void)viewDidLoad {
    NSLog(@"%d", xyz);
    [super viewDidLoad];
}