Освобождение розеток в NavigationController - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть буквально 24 IBOutlets в одном представлении NavigationController (ни один из них не сохраняется в качестве свойств).Есть хороший способ выпустить их?У меня такое ощущение, что они вызывают проблемы с памятью в более медленных устройствах 3G и 3GS.

Нет ARC

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 05 ноября 2011

Когда вы помещаете UIViewControllers в UINavigationController, представление UIViewControllers, которые были "помещены", может быть выгружено для сохранения памяти (поскольку они невидимы).Затем представления при необходимости перезагружаются (и вы получаете обратный вызов viewDidLoad).У вас должны быть IBOutlets для UIViewControllers, а не UINavigationController, чтобы их можно было выпускать в viewDidUnload.Обычный способ освободить их - объявить их как сохраненные свойства и установить для них значение nil (с помощью средства доступа self.outlet) в viewDidUnload и dealloc.Или просто используйте ARC.

0 голосов
/ 05 ноября 2011

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
...