我是Objective-C的新手。我正在将数组从NSObject传递给视图控制器(不是我的根)。 NS对象文件,以数组poolArray结束。
我也在void(dealloc)中使用了self.poolArray = nil;
。将此传递给我的视图控制器时,我必须采取哪些步骤?
编辑:为了更具体地说明我的事业,如果我只是处理两个视图控制器怎么办?
-(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做什么),一旦用户打开应用程序就开始数据收集;因此,当用户到达第二个视图控制器时,它已加载并准备就绪。
因此我想知道我是否可以在根视图控制器中进行下载和解析,并将数组发送到第二个视图控制器以便在需要时使用。我以为我可以使用root实现的createData部分来实现。
答案 0 :(得分:1)
为此,我的建议是实现委托方法。我想你了解目标C中的协议。More info about delegate pattern。
要做的步骤。 1.启动应用程序后,视图控制器设置委托并开始下载后台线程。 2.下载完成后,将通过委托方法设置下载的数据。
希望你能明白我的意思。有任何疑问,请在此发布。
答案 1 :(得分: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];
这就是theThatReturnsArray方法的样子
-(NSArray *)methodThatReturnsArray
{
NSArray* array = [[[NSArray alloc] init] autorelease];
// some code here that adds to the usefulness of the array
return array;
}