У меня есть пользовательский UIView, называемый TiledImage, который имеет одно свойство с именем tiledImage и пользовательский метод drawRect. Я добавляю этот вид в свой ViewController, но когда ViewController освобождается, dealloc для этого представления никогда не вызывается, хотя я освобождаю представление и устанавливаю его в nil. Что может быть причиной этого? У меня нет других ссылок на представление, поэтому я понимаю, что он должен корректно выпускаться.iphone SDK: UIView dealloc не называется. Зачем?
Это, как я добавить мнение на мой контроллер зрения:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"tile" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
self.backImageView = [[TiledImage alloc] initWithFrame:IMAGE_FRAME];
self.backImageView.tiledImage = image;
[self.view addSubview:self.backImageView];
[self.view sendSubviewToBack:self.backImageView];
[image release];
И в моем методе dealloc ViewController, я есть это:
_backImageView.tiledImage = nil, [_backImageView release], _backImageView = nil;
Эта строка кода хит, но dealloc является никогда не вызывал TiledView. Обратите внимание, что _backImageView - это var, который использует свойство backImageView.
Может кто-нибудь дать мне идеи о том, что я могу делать неправильно, что предотвращает вызов dealloc на объект TiledImage?
Похоже, что вы просачиваете память. 'dealloc' будет вызываться, когда счетчик ссылок равен нулю. Можете ли вы опубликовать код, в котором вы создаете свой 'TileImage'? Возможно, вы установили его в свойство 'keep' и никогда не выпустили его или что-то в этом роде. – pgb