ios6.0内存警告的兼容处理 viewDidUnload 屏蔽

ios6.0内存警告的兼容处理 viewDidUnload 屏蔽

内存警告的兼容处理:
.iOS6.0以前版本收到内存警告:
调用didReceiveMemoryWarning内调用super的didReceiveMemoryWarning会将controller的view进行释放。所以我们不能将controller的view再次释放。
处理方法:
        -(void)didReceiveMemoryWarning
        {
                 [super didReceiveMemoryWarning];
                 // ios6.0以前,不做处理
        }
        -(void)viewDidUnload
        {
               // Release any retained subviews of the main view.不包含self.view

                [super viewDidUnload];
        }

iOS6.0,内存警告:
调用didReceiveMemoryWarning内调用super的didReceiveMemoryWarning调只是释放controller的resouse,不会释放view
处理方法:
    -(void)didReceiveMemoryWarning
    {
            [super didReceiveMemoryWarning];
            // Add code to clean up any of your own resources that are no longer necessary.

            // 此处做兼容处理需要加上ios6.0的宏开关,保证是在6.0下使用的,6.0以前屏蔽以下代码,否则会在下面使用self.view时自动加载viewDidLoad
             if ([self.view window] == nil)// 是否是正在使用的视图
             {
            // Add code to preserve data stored in the views that might be
            // needed later.
        
            // Add code to clean up other strong references to the view in
            // the view hierarchy.


            self.view = nil;// 目的是再次进入时能够重新加载
             }
    }


官方文档比较详情见
     https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

转载:http://www.cocoachina.com/bbs/simple/?t125949.html

你可能感兴趣的:(ios6.0内存警告的兼容处理 viewDidUnload 屏蔽)