2011-05-14 98 views
-2

目标C的变量,我希望从一个.M调用变量其他的.m呼叫从一个文件到其他

这是送给MYVAR声明为Example1.h

一个int

Example1.m

myvar = myvar+10 

Example2.m

if (myvar == 10){NSLOG("@myvar equals the correct integer: %i",myvar);} 

然而,在默认情况下MYVAR将等于0,因为MYV从Example2.m中的Example1.h调用ar。

+0

您对术语的使用有点混淆。你不能调用一个变量,并且打印一个整数的格式说明符是'%i'而不是'i%'。 '''符号应该在引号之前。 'NSLOG(@“myvar等于正确的整数:%i”,myvar);' – Mahesh 2011-05-14 02:30:49

+0

@ Mahesh这不是重点......我想myvar被加载到Example2.m – evdude100 2011-05-14 02:51:30

回答

1

对于全局值,创建一个类来保存这些变量,并将变量定义为静态。您也可以定义类级别的方法来操纵静态变量。我打电话给我的班级appState。您可以将myVar定义为静态,然后将类方法(使用+ not - )来获取和设置此变量。

下面是一个BOOL的例子,我可以从我的应用程序的任何地方访问。

account.h

#import <Foundation/Foundation.h> 

@interface Account : NSObject 
{ 
} 

+(BOOL)isOffLine; 
+(void)setOffLine:(BOOL)newValue; 

@end 

account.m

#import "Account.h" 

@implementation Account 

static BOOL _offline; 

+(BOOL)isOffLine; 
{ 
    return _offline; 
} 

+(void)setOffLine:(BOOL)newValue 
{ 
    _offline = newValue; 
} 

@end 
从我的应用程序的任何类

现在,我可以#import account.h,然后使用类似:

if ([Account isOffLine]) {...} 

[Account setOffLine:YES]; 

请注意,我没有创建此类的实例。我在调用类级别的方法。该值将在我的应用程序中的不同类的调用之间持续存在。

+0

不起作用。我跟着http://www.otierney.net/objective-c.html#class无法工作 – evdude100 2011-05-14 03:47:49

+0

它适用于我们中的一些人。也许你的代码中有一个错误?如果你发布它,我会尽力帮忙。 – 2011-05-14 03:51:37

+0

谢谢。我已经花了至少4个小时。 Player.h:http://pastebin.com/zCA1pwDw Player.m:http://pastebin.com/bYm6D7SU EntityZombie.h:http://pastebin.com/D7LPyZaD EntityZombie.m:http://pastebin.com/LAvZLTUn – evdude100 2011-05-14 03:56:23

1

我建议你阅读基础知识,也许Object-Oriented Programming with Objective-C可能是一个很好的开始。我的猜测是,你应该做的是在一个类中创建一个property并从另一个类访问它。

+0

我得到的错误:属性'xcord'尝试使用'超级'EntityZombie中声明的ivar'xcord' – evdude100 2011-05-14 14:28:03