как заставить приложение работать хорошо - PullRequest
0 голосов
/ 01 июня 2011

У меня есть несколько UIViews, и есть несколько кнопок на первом UIView, функции щелчка по ним нравится это

-(IBAction)securityClicked:(id)sender
{ 

SwitchViewController* switchViewController = (SwitchViewController*)[wangfan_chevyAppDelegate App].viewController;
[switchViewController.wtccviewcontroller.scrollView1 setContentOffset:CGPointMake(
                            1024*0, 0) animated:false];
[[testAppDelegate App] pushViewFromRight:switchViewController.wtccviewcontroller
                                            over:self];

}

и код файла wtccviewcontroller.m

- (void)viewDidLoad {
[super viewDidLoad];    

UIViewController* controller = nil;

controller = [[Wtcc1ViewController alloc]initWithNibName:@"Wtcc1ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*0, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Wtcc2ViewController alloc]initWithNibName:@"Wtcc2ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*1, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Wtcc3ViewController alloc]initWithNibName:@"Wtcc3ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*2, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Wtcc4ViewController alloc]initWithNibName:@"Wtcc4ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*3, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[SecurityViewController alloc]initWithNibName:@"SecurityViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*4, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Security2ViewController alloc]initWithNibName:@"Security2ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*5, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Onstar1ViewController alloc]initWithNibName:@"Onstar1ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*6, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Movie1ViewController alloc]initWithNibName:@"Movie1ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*7, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[CarownerViewController alloc]initWithNibName:@"CarownerView" bundle:nil];
controller.view.frame = CGRectMake(1024*8, 0, 1024, 768);
[scrollView1 addSubview:controller.view];   
//[controller release];

controller = [[Co01ViewController alloc]initWithNibName:@"Co01ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*9, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co02ViewController alloc]initWithNibName:@"Co02ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*10, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co03ViewController alloc]initWithNibName:@"Co03ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*11, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co04ViewController alloc]initWithNibName:@"Co04ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*12, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co05ViewController alloc]initWithNibName:@"Co05ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*13, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co06ViewController alloc]initWithNibName:@"Co06ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*14, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[Co07ViewController alloc]initWithNibName:@"Co07ViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*15, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

controller = [[ConfigViewController alloc]initWithNibName:@"ConfigViewController" bundle:nil];
controller.view.frame = CGRectMake(1024*16, 0, 1024, 768);
[scrollView1 addSubview:controller.view];

    [scrollView1 setContentSize:CGSizeMake(1024*17,768)];
   }

поскольку контроллеров много, поэтому, когда я нажимаю кнопку в первом представлении, она будет загружаться так долго, что даже выйдет из приложения, так как мне сделать, чтобы оно работало нормально?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Как минимум три основных проблемы с вашим кодом:

  1. Вы пропускаете объекты как сумасшедшие.Вы выделяете несколько контроллеров представления, но никогда не освобождаете их.Фактически, поскольку вы переназначаете переменную controller, вы теряете ссылку на эти объекты, поэтому вы никогда не сможете их освободить.
  2. Не используйте несколько объектов UIViewController для управления частями одного представления,Контроллер вида разработан и предназначен для использования в полноэкранном режиме (или как часть UINavigationController, UITabBarController и т. Д.).Вы должны использовать отдельные UIView объекты и управлять ими из объекта центрального контроллера и / или использовать свои собственные облегченные контроллеры представления.
  3. Ваш конечный размер представления примерно равен 8192x768;это массивно.По крайней мере, вы можете использовать UITableViewController для интеллектуального кэширования частей вашего представления.Этот экран, вероятно, должен быть разбит на более мелкие виды.
1 голос
/ 01 июня 2011

Прежде всего, если вы вызываете [alloc], вы создаете объект (для каждого контроллера), тогда вы должны его освободить. Вы можете сделать это после добавления подпредставления, так как оно сохраняет его.

Я вижу, вы несколько раз прокомментировали [выпуск контроллера], а затем совершенно забыли об этом.

Также вы добавляете много контроллеров здесь. Вы можете добавить первый в viewDidLoad и лениво загружать друг друга контроллер только при нажатии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...