在我的DataCell.h中,我在interface:
之前声明了全局变量extern NSInteger MYGlobalVariable;
在我的DataCell.m
中我设置变量的值:
NSInteger MYGlobalVariable = 35;
在我的另一个类MyTableViewController.m
中我导入了DataCell.h,然后尝试将int的值设置为标签。
_testLabel.text = [NSString stringWithFormat:@"%i" , MYGlobalVariable];
然而,当我尝试构建应用程序时,我得到错误:
答案 0 :(得分:3)
根据你上面所说的,你做的一切都是正确的。这个,我怀疑上面的一个细节与你的代码不符。
extern
声明是否与变量声明匹配? (例如,你没有意外地拼写它等等。)
.m中的变量声明是否意外地以static
关键字为前缀?
你的NSInteger MyGlobalVariable = 35
行实际上是在方法中吗?如果是这样,那只会声明该方法的局部变量。确保它不在任何花括号内;它应该浮动在文件的最外层。你可以把它放在@implementation
块之前,如果有帮助的话。
如果没有一个修复它,那么您可能需要向我们展示您的实际代码,以便我们可以更好地了解出现了什么问题。
答案 1 :(得分:-2)
您不需要在DataCell.h文件中编写extern关键字。
只需在接口之前将其声明为NSInteger MYGlobalVariable;
,然后在TableViewController.m文件中声明变量extern NSInteger MYGlobalVariable;
。
这会有效!
答案 2 :(得分:-2)
您需要通过执行以下操作将变量传递给类。
MyTableViewController.h
#import DataCell.h //At top...
@property (strong, nonatomic) DataCell *datacell;
MyTableViewController.m
@synthesize datacell;
_testLabel.text = [NSString stringWithFormat:@"%i" , dataCell.MYGlobalVariable];