Я довольно новичок в Objective-C, и хотя я думаю, что понимаю основы подсчета ссылок, я не понимаю некоторые из поведения, которое я вижу.
В Инструментах я заметил, что у меня очень сильно теряется память при перемещении между двумя ViewControllers. Насколько я могу судить, я звоню в релиз каждый раз, когда я вызываю alloc, но я уверен, что делаю некоторые ошибки новичка.
Однако ранее я обнаружил, что звоню:
[self.view release];
Останавливает утечку. Тем не менее, добавляется сообщение об ошибке, что «выходной указатель не был выделен». Очевидно, это исправляет что-то, что я сделал неправильно, но я не уверен, почему вызов этого там делает работу, которая
[super dealloc];
Должен (?) Делать.
Я уверен, что там полно проблем, но если кто-нибудь сможет мне помочь, я буду очень благодарен - несколько дней рвал на себе волосы: /
Вот код для WatchViewController:
#import "WatchViewController.h"
@implementation WatchViewController
@synthesize backButton = _backButton, scrollView = _scrollView, image;
...
-(void) backButtonPressed
{
[self.navigationController popViewControllerAnimated:YES];
}
...
- (void)loadView
{
UIView *locView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = locView;
[locView release];
}
-(void) dealloc
{
self.image = nil;
self.backButton = nil;
self.scrollView = nil;
[super dealloc];
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *str = [[NSBundle mainBundle] pathForResource:@"back_button" ofType:@"png"];
UIButton *locButton = [[UIButton alloc] init];
UIImage *locImage = [[UIImage alloc] initWithContentsOfFile:str];
[locButton setImage:locImage forState:UIControlStateNormal];
[locButton setFrame:CGRectMake(0, 0, locImage.size.width, locImage.size.height)];
[locButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
self.backButton = locButton;
[self.view addSubview:_backButton];
[locImage release];
[locButton release];
[self.view release];
}