我有我創建程序大致是這樣一個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