2011-07-12 59 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

相关问题