访问全局变量,在目标 C 中给出链接器错误



>我声明了一个全局变量,如下所示

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;
}

相关内容

  • 没有找到相关文章

最新更新