Iphone UIViewController.view的内存分配/解除分配

Iphone UIViewController.view的内存分配/解除分配,iphone,cocoa-touch,memory-management,uiviewcontroller,Iphone,Cocoa Touch,Memory Management,Uiviewcontroller,我正试着了解以下几点 我正在调试一个似乎需要更多内存的应用程序。我将以下代码添加到viewcontroller的“crashtest”中: NSLog(@"allocating 10000 instances of the MyViewController"); for (int i=0; i<10000; i++) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; MyViewController

我正试着了解以下几点

我正在调试一个似乎需要更多内存的应用程序。我将以下代码添加到viewcontroller的“crashtest”中:

NSLog(@"allocating 10000 instances of the MyViewController");
for (int i=0; i<10000; i++) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    if (aController.view == nil) {} 
    [aController release];
    [pool drain];
}
NSLog(@"done allocating 10000 instances of MyViewController");
NSLog(@“分配10000个MyViewController实例”);

对于(int i=0;i消息
[viewController view]
加载视图(当/如果需要)。

消息
[viewController view]
加载视图(当/如果需要).

听起来你的控制器/视图可能有漏洞。你忘了在
-dealloc
中将一些IBOutlets设置为nil吗?是的,它们都被计算在内了。我有4个,每一个都在
dealloc
中被释放,如下所示:
[myButton release],myButton=nil
,如果“听起来可能有漏洞”,你应该检查它是否真的是。用仪器运行你的测试程序(有一个“泄漏”仪器)可以告诉您是否确实存在泄漏。Instruments/Leaks不会告诉我是否存在泄漏。但这并不意味着没有泄漏,在某些情况下,Instruments不会将泄漏条件检测为泄漏。听起来您的控制器/视图中可能存在泄漏。您是否忘了在
-dealloc
?是的,它们都被计算在内了。我有4个,它们中的每一个都在
dealloc
中发布如下:
[myButton release],myButton=nil
如果某个东西“听起来可能有泄漏”,你应该检查它是否真的有泄漏。用仪器运行测试程序(有一个“泄漏”仪器)可以告诉你是否真的有泄漏。仪器/泄漏不会告诉我有泄漏。但这并不意味着没有泄漏,在某些情况下,仪器不会将泄漏情况检测为泄漏。