2011-07-29 30 views
0

我只是好奇正確的方式去訪問一個屬性,我已經在ViewController中聲明,並在Objective-C類文件中使用它?我已經包含了.h文件,但這似乎不夠。我知道我可以將它移到應用程序代理,然後在兩個地方訪問它,但必須有更清晰和更直接的方式。從Objective-C類文件訪問ViewController的成員/屬性的正確方法?

編輯爲清楚:

nrViewController.h: 

@interface nrViewController : UIViewController { 

    NSMutableArray *checkpoints; 
} 

@property (nonatomic, retain) NSMutableArray *checkpoints; 

nrViewController.m 

@implementation nrViewController 
@synthesize checkpoints; 

//A bunch of code, some of which actually uses checkpoints 

@end 

XMLParser.m: 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 

    if([elementName isEqualToString:@"Checkpoints"]) { 

     checkpoints = [[NSMutableArray alloc] init]; 

    } 

這是不完全完成了,我想我們是在更多的地方,但XMLParser.m以外唯一的其他地方將是nrViewController.m和我明白如何做到這一點。我想在nrViewController中聲明和使用檢查點變量,並在XMLParser.m中使用它,以及我將加載解析數據並對其進行處理。我希望這能更清楚地說明一些事情,但如果需要更多信息,我會很樂意更詳細地解釋。

謝謝!

-Kolyoly

+1

您的變量* *如何你居然DECL是嗎? – Cyrille

+0

你是否真的在視圖控制器對象上調用屬性方法? – Abizern

+0

@Cyrille:抱歉,繼續編輯並嘗試澄清。 –

回答

1

說實話,很難跟隨問題的想法。

如果你聲明的屬性和合成或編碼的getter/setter方法,那麼它應該是可以從其他類,只要你試圖從類,在這裏聲明的屬性對象得到它。

如果你想使用屬性作爲一個靜態變量,觸摸一個類,而不是一個對象,那麼你可以做到這一點,但你應該將這個變量定義爲靜態全局變量並直接使用它,或者你應該實施您的自定義靜態該屬性的getter/setter方法。希望我沒有在某個地方感到困惑。

編輯 根據所提供的代碼觀察: 你沒有申報財產,男人。爲了您的變量,你應該使用

@property (nonatomic, retain) NSMutableArray *checkpoints; 

(這是@interface收盤身影支架下方。而在.m文件,你應該做@synthesize checkpoints;

(後@implementation nrViewController {

此外,訪問您可以編輯您的問題,我們展示的方式

yourNRViewControllerInstance.checkpoints = ... 
+0

我想它可能是像myNRViewControllerINstance.checkpoints,但是每當我嘗試在我的XMLParser.m文件中使用它,它默認爲類NRViewController,並不能識別實際的實例,這就是爲什麼我問這個問題。至於需要我的部分只是懶惰編輯的綜合和財產聲明......抱歉>。< –

+0

NP。你也應該在你的XMLParser.m類中執行#import nrViewController.h。當然,myNRViewControllerINstance不能只在XMLParser中分配:它應該是同一個對象,然後你將使用它。 – makaron

+0

我在那裏導入它,但它仍然不能識別具體的實例。我試圖做到以下幾點:appDelegate.RLTableViewController.NRViewController.checkpoints,這似乎被認可,雖然我的具體實例稱爲myRLTableViewController和myNRViewController,所以我不認爲它是同一個對象。我在這個假設中糾正了錯誤,還是它應該看起來如此? –

相關問題