0

在我的 DataCell.h 中,我在接口之前声明了全局变量:

extern NSInteger MYGlobalVariable;

在我的 DataCell.m

我设置变量的值:

NSInteger MYGlobalVariable = 35;

在我的另一个班级 MyTableViewController.m

我导入了 DataCell.h,然后尝试将 int 的值设置为标签。

_testLabel.text = [NSString stringWithFormat:@"%i" , MYGlobalVariable];

但是,当我尝试构建应用程序时,出现错误:

  • 架构 i386 的未定义符号:“_MYGlobalVariable”,引用自:MyTableViewController
  • 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
4

3 回答 3

3

根据你上面所说的,你做的一切都是正确的。这一点,我怀疑上面的细节之一与您的代码不匹配。

声明是否extern与变量声明匹配?(例如,您没有不小心拼写不同等)

.m 中的变量声明是否意外地以static关键字为前缀?

您的NSInteger MyGlobalVariable = 35线路实际上是否在方法内?如果是这样,那将只是声明该方法的本地变量。确保它不在任何花括号内;它应该浮动在文件的最外层。@implementation如果有帮助,您可以将它放在块之前。

如果这些都不能解决问题,那么您可能需要向我们展示您的实际代码,以便我们更好地了解问题所在。

于 2013-04-02T13:23:56.760 回答
-2

您不需要在 DataCell.h 文件中编写 extern 关键字。

只需像在接口之前一样声明它NSInteger MYGlobalVariable;,然后在 TableViewController.m 文件中声明一个变量extern NSInteger MYGlobalVariable;

这会奏效!

于 2013-04-02T13:09:12.783 回答
-2

您需要通过执行以下操作将变量传递给类。

MyTableViewController.h

#import DataCell.h //At top...

@property (strong, nonatomic) DataCell *datacell;

MyTableViewController.m

@synthesize datacell;

_testLabel.text = [NSString stringWithFormat:@"%i" , dataCell.MYGlobalVariable];
于 2013-04-02T13:09:57.493 回答