如何使用extern关键字定义全局ivars,是否有人知道这个问题?提前感谢。
评论更新:
好的,我从互联网上搜索我应该在.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
?
我从我这边测试它并且我可以成功地构建它,但我感到困惑的是为什么要以这种方式声明全局变量。变量在任何代码块之外。
答案 0 :(得分:0)
您需要在界面中对其进行外设并在testGlobal
类的实现中声明:
//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];
}