我在NavigationController的一个视图中确实有24个IBOutlets(没有一个被保留为属性)。有没有一个好方法来释放这些?我感觉他们在较慢的3G和3GS设备中引起了内存问题。
没有ARC
有什么想法吗?
答案 0 :(得分:2)
当您将UIViewControllers推送到UINavigationController时,可以卸载已被“推入”的UIViewControllers视图以节省内存(因为它们是不可见的)。然后在必要时重新加载视图(并获得viewDidLoad回调)。你应该有UOaviewControllers的IBOutlets而不是UINavigationController,以便它们可以在viewDidUnload上发布。释放它们的通常方法是将它们声明为保留属性,并在viewDidUnload和dealloc中将它们设置为nil(使用self.outlet访问器)。或者只使用ARC。
答案 1 :(得分:0)
@interface ViewController : UIViewController
{
}
@property (retain, nonatomic) IBOutlet UILabel *myLabel;
@end
#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