>我声明了一个全局变量,如下所示
extern NSString *name;
@interface viewcontrollerOne{}
在实现文件中,我正在通过某种方法访问该全局变量,例如
-(void)someMethod
{
name = @"hello";
}
但这会给出链接器错误。
"名称",引用自: -[viewcontrollerOne someMethod] in viewcontrollerOne.o LD:找不到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
以下内容只是一个声明:
extern NSString * const name; // << side note: this should typically be const
它宣称有一个NSString*
的符号,名为name
。它不会创建存储。
为此,您需要提供name
的定义。为此,请将以下内容添加到 .m 文件中:
NSString * const name = @"hello";
如果要在实例方法中设置它,如示例中所示,则可以声明它:
蒙菲勒·
extern NSString * name;
定义它:
蒙菲勒·
NSString * name = 0;
然后,您可以在实例方法中编写name = @"hello";
。
extern 典型地用于创建连续体。如果要创建全局变量字符串,可以通过以下方式执行此操作:
.h
+ (void)setName:(NSString*)name_in;
+ (NSString*)name;
.m
NSString* gName;
@implementation ...
+ (void)setName:(NSString*)name_in{
gName = name_in;
}
+ (NSString*)name{
return gName;
}