2011-07-12 81 views
0

對Objective-C來說相當新。我正在將一個NSObject數組傳遞給視圖控制器(不是我的根)。 NS對象文件,完成數組poolArray。我也在void(dealloc)中使用self.poolArray = nil;。當把它傳遞給我的視圖控制器時,我必須採取哪些步驟?從NSObject傳遞一個數組到視圖控制器

編輯:爲了更具體的我的事業,如果我只是處理兩個視圖控制器?

-(void)createData { 
    //poolFixtures being the text within each cell of my table view. 
    NSMutableArray *poolFixtures; 

    groupSections=[[NSMutableArray alloc] initWithObjects: @"Pool Stages", nil] 

    poolFixtures=[[NSMutableArray alloc] init]; 


    [poolFixtures addObject:[[NSMutableDictionary alloc] 
    initWithObjectsAndKeys:@"This is a name",@"name",nil]]; 

    fixtureData=[[NSMutableArray alloc] initWithObjects: poolFixtures, nil]; 

    [poolFixtures release]; 
} 

我有一個類似的設置爲我的第二個視圖控制器。然而,第二個需要的標題要求我從一個html文件下載數據,將它們解析成我想要的格式等等。當在第二個視圖控制器中使用時,它需要很長時間(我認爲是因爲html加載時間) 。我試圖完成的任務(我認爲我可以用NSobject完成的任務)是在用戶打開應用程序後立即開始數據收集;所以,當用戶到達第二個視圖控制器時,它就會被加載並準備就緒。

因此我想知道是否可以在根視圖控制器中進行下載和解析,並將數組發送到第二個視圖控制器以供需要時使用。我想我可以使用我的根實現的createData部分來完成這個任務。

+0

我想你需要發佈一些代碼才能得到有意義的答案。 –

+0

已經完成了,謝謝你的建議。 –

回答

1

對於這一點,我的建議是實施委託方法。我想你知道目標C中的協議。More info about delegate pattern

要做的步驟。 1.啓動ur app後,視圖控制器設置委託並開始在後臺線程下載。 2.下載完成後,下載的數據將通過委託方法設置。

希望你能明白我的觀點。有任何疑問,請在此發佈。

+0

看看蘋果URLCache的鏈接(http://developer.apple.com/library/ios/#samplecode/URLCache/Introduction/Intro.html)。那是否符合我想要完成的任務? –

0

我可能會誤解你,但是這是你通常做....

Object obj = [[Object alloc] init]; 
ViewController *vc = [[ViewController alloc] initWithNibName:@"NibName" bundle:nil]; 
// this is a public property of the viewcontroller 
vc.array = [object methodThatReturnsArray]; 
[self.navigationController pushViewController:vc]; 

這是methodThatReturnsArray會是什麼樣

-(NSArray *)methodThatReturnsArray 
{ 
    NSArray* array = [[[NSArray alloc] init] autorelease]; 
    // some code here that adds to the usefulness of the array 
    return array; 
} 
+0

return語句應該像'return [array autorelease]'。 – Ilanchezhian

+0

@Gomathi'array'已經是'autorelease'd。要添加,沒有意義創建一個空的不可變對象。 –

+0

@Gomathi:他在init的聲明中有autorelease。做[array autorelease]不會做任何事情。 – ColdLogic

相關問題