我有我创建程序大致是这样一个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];
}
这似乎能够释放视图控制器和视图,但是当我将这个视图控制器重新放回堆栈时,我得到带有僵尸的消息: - [SlideShowView retain]:发送到释放实例的消息0x43ab160
当控制器被按下时,alloc不应该创建视图的新实例吗?我不明白,花了好几个小时阅读其他帖子以及看内存指南后,我会说我彻底难倒了!有人可以提供任何指针吗?我只发布了我认为必要的代码,但如果需要的话,我可以发布更多代码。 非常感谢!
感谢您的回复。我已经对我的代码以及上面的帖子进行了编辑。我仍然有同样的问题。你可能有其他建议吗? – Dobler 2010-02-08 06:32:36