- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } #pragma mark - Start 数据入口 -(void)inputData { //对程序级的全局变量用局部变量获取出来,然后转存给当前viewController的全局变量 //在当前viewController中,只使用当前类的全局变量,不要在程序中使用 整个程序的全局变量,那样数据将会失控 } #pragma mark - step 1 画面开始 - (void)viewDidLoad { [super viewDidLoad]; [self inputData]; //获取本类需要用到的基本数据 [self loadBasicView]; //加载最基本的界面 //开启子线程到网络上获取数据 NSThread *thread1 = [[NSThread alloc]initWithTarget:self selector:@selector(thread1_getData) object:nil]; [thread1 setName:@"第一个子线程,用于获取网络数据"]; [thread1 start]; } #pragma mark - step 2 加载最基本的界面 -(void)loadBasicView { } #pragma mark - step 3 第一个子线程 : 用于获取网络数据 相当于为TabelView生成数据源 -(void)thread1_getData { //自定义获取数据操作 // // //回到主线程,更新用户界面 疑问: 用下面这种方式更新界面,会有延迟问题 // [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO]; [self updateUI]; //被迫先用这种方式 } #pragma mark - step 4 更新用户界面 (同时开启第二个子线程,下载图片) -(void)updateUI { //更新用户界面操作,如 [tableView reload]; 等 // // //开启单独的第二个线程 下载主界面的头图片,并一个一个进行显示 NSThread *thread2 = [[NSThread alloc]initWithTarget:self selector:@selector(thread2_downLoadImagesForView) object:nil]; [thread2 setName:@"第二个子线程,用于下载图片,并一个一个显示在主界面"]; [thread2 start]; } /* #pragma mark - TableViewDelegateMethods //组的个数 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } //行数 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } //各项的高 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 70 ; } //每个单元行中的内容 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdetify = @"cell"; UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdetify] autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleGray; //设置分割线的颜色 //对cell进行自定义 return cell; } //单元格被选中 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } */ #pragma mark - step 5 开启第二个子线程:下载图片,并添加到 self.view 上 -(void)thread2_downLoadImagesForView { } #pragma mark - step 6 处理画面中的按钮的响应事件 #pragma mark - step7 画面消失 - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } #pragma mark - End 数据出口 -(void)outputData { //对类的全局变量进行归位(或许不必) //对类中输出的数据进行集中管理 //用类的全局变量对应用程序级全局变量进行管理 }