Iphone 如何使应用程序运行良好

Iphone 如何使应用程序运行良好,iphone,uiview,uiviewcontroller,Iphone,Uiview,Uiviewcontroller,我有一些UIView,在第一个UIView上有一些按钮,它们的点击功能如下 -(IBAction)securityClicked:(id)sender { SwitchViewController* switchViewController = (SwitchViewController*)[wangfan_chevyAppDelegate App].viewController; [switchViewController.wtccviewcontroller.scrollView1 se

我有一些UIView,在第一个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)];
   }

因为有很多控制器,所以当我单击第一个视图上的按钮时,它会被加载很长时间,甚至退出应用程序,所以我应该如何使它运行良好?

首先,如果你调用[alloc],你创建了一个对象(针对每个控制器),那么你必须释放它。可以在添加子视图后执行此操作,因为这样会保留它

我看到你评论了几次[controller release],然后完全忘记了它


此外,您还在这里添加了许多控制器。您可以在viewDidLoad中添加第一个,并且只有在单击时才可以惰性地加载其他控制器。

首先,如果您调用[alloc],则必须为每个控制器创建一个对象,然后必须释放它。可以在添加子视图后执行此操作,因为这样会保留它

我看到你评论了几次[controller release],然后完全忘记了它


此外,您还在这里添加了许多控制器。您可以在viewDidLoad中添加第一个,并且只有在单击时才可以惰性地加载其他控制器。

您的代码至少存在三个主要问题:

  • 你在疯狂地泄漏物品。您正在分配多个视图控制器,但从未释放它们。事实上,由于正在重新分配
    控制器
    变量,因此将丢失对这些对象的引用,因此无法释放它们
  • 不要使用多个
    UIViewController
    对象来控制单个视图的部分。视图控制器设计用于全屏(或作为
    UINavigationController
    UITabBarController
    等的一部分)。您应该使用单个
    UIView
    对象,并从中央控制器对象控制它们和/或使用您自己的轻量级视图控制器
  • 最终视图大小约为8192x768;这是巨大的。至少,您可以使用
    UITableViewController
    智能地缓存部分视图。不过,这个屏幕可能应该拆分成更小的视图

  • 您的代码至少存在三个主要问题:

  • 你在疯狂地泄漏物品。您正在分配多个视图控制器,但从未释放它们。事实上,由于正在重新分配
    控制器
    变量,因此将丢失对这些对象的引用,因此无法释放它们
  • 不要使用多个
    UIViewController
    对象来控制单个视图的部分。视图控制器设计用于全屏(或作为
    UINavigationController
    UITabBarController
    等的一部分)。您应该使用单个
    UIView
    对象,并从中央控制器对象控制它们和/或使用您自己的轻量级视图控制器
  • 最终视图大小约为8192x768;这是巨大的。至少,您可以使用
    UITableViewController
    智能地缓存部分视图。不过,这个屏幕可能应该拆分成更小的视图

  • 你说的“好”是什么意思?高绩效?易于维护?友好使用?你说的“好”是什么意思?高性能?易于维护?友好使用?视图将只保留添加的视图,而不是保留视图的视图控制器!哦,那是真的!我的评论是正确的,因为他在堆栈上推一个viewcontroller。无论如何,我认为kubi上面的评论更好地总结了这些问题。视图将只保留添加的视图,而不是保存视图的视图控制器!哦,那是真的!我的评论是正确的,因为他在堆栈上推一个viewcontroller。无论如何,我认为库比上面的评论更好地总结了问题。