У меня есть UIView, который я создаю программно примерно так:Не похоже, чтобы иметь возможность повторно Alloc отпущенном UIView
@implementation SlideShowView
- (id)initWithImages
{
…
if (self=[super initWithFrame:CGRectMake(0, 0, 320, 480)])
{
// init objects here
}
return self;
}
- (void)dealloc
{
printf("dealloc slide show view\n");
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"unlockUI" object:nil ];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"setUserRating" object:nil ];
[mCurrentImageView release];
[mRightImageView release];
[mLeftImageView release];
[mImages release];
[queue cancelAllOperations];
[queue release];
[managingArray release];
[super dealloc];
}
с контроллером UIView, который содержит этот:
- (void)loadView {
{
...
self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.slideShowViewObject = [[SlideShowView alloc] initWithImages];
[self.view addSubview:slideShowViewObject];
…
}
-(void)dealloc
{
[slideShowViewObject release];
[self.slideShowViewObject removeFromSuperview];
printf("dealloc of slideshow view controller\n");
[super dealloc];
}
это, похоже, способно исключить как контроллер представления, так и представление, но когда я нажму этот контроллер представления обратно в стек, я получаю сообщение с включенным зомби: - [Слайд-шоу] сохраняется: сообщение отправлено на освобожденный экземпляр 0x43ab160
следует ли, если контроллер не будет создавать новый экземпляр представления при нажатии контроллера? Я не понимаю, и, потратив много часов на чтение других сообщений, а также глядя на руководства по памяти, я бы сказал, что я полностью запятнал! Может ли кто-нибудь предложить какие-либо указатели? Я только опубликовал код, который я счел нужным, но могу при необходимости разместить больше сообщений. Большое спасибо!
Благодарим вас за ответ. Я внес эти изменения в свой код, а также в сообщение выше. Тем не менее, у меня все еще есть одна и та же проблема. Возможно, у вас есть другие предложения? – Dobler