示例:我有一个警告三角形图标,它是一个UIImageView子类。该警告与动画混合,脉冲持续3秒,然后淡出。
它总是有父视图!
它总是只使用这种方式:alloc,init,add as subview,kick off animation,完成时:从superview中删除。
所以我想要这个:
[WarningIcon warningAtPosition:CGPointMake(50.0f, 100.0f) parentView:self];
BANG!
就是这样。打电话给忘记。
视图将自身添加为父视图的子视图,然后执行动画。完成后,它会使用[self removeFromSupeview];
从分支中切断自己。并且为了确保程序在此之后能够真正完成,请制作一个漂亮的-retain和-autorelease夫妇,这样整个事情就可以在真正被破坏之前完成并返回。
现在一些书呆子一年前告诉我:“永远不要把自己从自己的分支处切断”。换句话说:如果视图不再在任何地方被引用,那么视图永远不会从superview中删除。
我想得到它,真的。为什么?想一想:很难,我会做同样的事情。创建一个实例并将我作为委托挂起,启动动画,当警告图标完成动画时,它会回叫“嘿,我已经完成了,摆脱了我!” - 所以我的委托方法是用指向该实例的指针调用的,我做的完全相同:[thatWarningIcon removeFromSuperview]; - 砰。
现在我真的很想知道为什么这很糟糕。生活会很容易。
答案 0 :(得分:1)
我对您的解决方案没有异议 - 特别是[[self retain] autorelease]
。我自己也不时使用相同的方法。
你应该去问无分支的书呆子关于他的推理(并在这里发布这些信息)。