Iphone UIViewController.view的内存分配/解除分配
我正试着了解以下几点 我正在调试一个似乎需要更多内存的应用程序。我将以下代码添加到viewcontroller的“crashtest”中: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
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
如果某个东西“听起来可能有泄漏”,你应该检查它是否真的有泄漏。用仪器运行测试程序(有一个“泄漏”仪器)可以告诉你是否真的有泄漏。仪器/泄漏不会告诉我有泄漏。但这并不意味着没有泄漏,在某些情况下,仪器不会将泄漏情况检测为泄漏。