2011-05-14 149 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