在NavigationController中释放出口

时间:2011-11-05 13:55:28

标签: iphone memory-management uinavigationcontroller iboutlet

我在NavigationController的一个视图中确实有24个IBOutlets(没有一个被保留为属性)。有没有一个好方法来释放这些?我感觉他们在较慢的3G和3GS设备中引起了内存问题。

没有ARC

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

当您将UIViewControllers推送到UINavigationController时,可以卸载已被“推入”的UIViewControllers视图以节省内存(因为它们是不可见的)。然后在必要时重新加载视图(并获得viewDidLoad回调)。你应该有UOaviewControllers的IBOutlets而不是UINavigationController,以便它们可以在viewDidUnload上发布。释放它们的通常方法是将它们声明为保留属性,并在viewDidUnload和dealloc中将它们设置为nil(使用self.outlet访问器)。或者只使用ARC。

答案 1 :(得分:0)

ViewController.h

@interface ViewController : UIViewController
{

}

@property (retain, nonatomic) IBOutlet UILabel *myLabel;

@end

ViewController.m

#import "ViewController.h"

@implementation ViewController
@synthesize myLabel;

#pragma mark - View lifecycle

- (void)viewDidUnload
{
    [self setMyLabel:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)dealloc {
    [myLabel release];
    [super dealloc];
}
@end