全局变量的链接器错误

时间:2013-10-08 00:57:42

标签: objective-c cocoa global-variables linker-errors

我正在制作一个小而简单的应用程序,所以我决定使用全局变量而不是Singletons。我也只使用一个。

我的应用程序从一个小的首选项文件中提取一个int,并将其设置为全局变量作为NSInteger。应用程序运行时可能会更改全局变量。

AppController.h

#import <Cocoa/Cocoa.h>

extern NSInteger preferenceNumber;

@interface ....

App Controller.m

-(void)someMethod {
    ...
    //fileContents is a string containing the int that is inside the file
    preferenceNumber = [fileContents intValue]
    ...
}

链接器错误(2):  架构x86_64的未定义符号:   “_ preferenceNumber”,引自:        - AppController.o中的[AppController someMethod1]        - AppController.o中的[AppController someMethod2:] ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

粗体部分是两个错误。

造成这种情况的原因是什么?解决它的最简单,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

只需在实现类中添加一行: -

AppContollr.m


@implementation AppContoller
NSInteger preferenceNumber;