Iphone 正在添加子视图,然后将其释放:";“正在修改正在定稿的视图”;

Iphone 正在添加子视图,然后将其释放:";“正在修改正在定稿的视图”;,iphone,memory-management,uiview,Iphone,Memory Management,Uiview,我有一个名为tagButton的UIButton和一个名为tagsView的UIScrollView 在我的-(void)renderTags方法中,我会 [[self.tagsView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; …为了清理甲板,然后我遍历一对名为allTags和activeTags的数组,为用户在应用程序中使用过的每个标签交替创建“亮”和“不亮”按钮。到现在为止,一直都还不错。但

我有一个名为tagButton的UIButton和一个名为tagsView的UIScrollView

在我的
-(void)renderTags
方法中,我会

[[self.tagsView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
…为了清理甲板,然后我遍历一对名为
allTags
activeTags
的数组,为用户在应用程序中使用过的每个标签交替创建“亮”和“不亮”按钮。到现在为止,一直都还不错。但是,当我将新创建的UIButton添加到我的视图中时,因此:

[self.tagsView addSubview:tagButton];
[tagButton release];
…第一次,视图上什么也没有发生,标记按钮没有显示。第二次我将相同的字符串放入(触发
-toggleTag
而不是
-createTag
,但以相同的呈现方法结束),我得到控制台消息
正在最终确定的修改层=0x82b3ec0


不过,如果我把
[tagButton release]
注释掉,一切都正常。那么,有什么好处呢?我认为将子视图添加到superview会使superview保留它。我不会再处理这个按钮,除非下次我呈现标记列表时告诉它删除自己,所以看起来视图控制器应该释放它。

你的问题可能是你没有保留tagButton开始,因此没有必要释放它…希望这有帮助。

你在哪里定义tagButton?如果你一开始不保留它,那么就没有必要发布它,你确定tagsView不是零吗?@Daniel。哦。就这样。我用一种方便的方法获得了它,所以它已经被自动删除了。你能不能说点什么作为回答,这样我就可以接受了?回答…该死的15个字符谢谢。全职开发iPhone三个月后,我仍然无法避免新手犯下的错误……三个月没那么长:)你的回答也帮了我。谢谢。:)