Пример: у меня есть значок предупреждающего треугольника, который является подклассом UIImageView. Это предупреждение смешивается с анимацией, пульсирует в течение 3 секунд, а затем исчезает.
у него всегда есть родительское представление!
всегда используется только так: alloc, init, add as subview, запуск анимации, когда закончите: удалить из superview.
Итак, я хочу это:
[WarningIcon warningAtPosition:CGPointMake(50.0f, 100.0f) parentView:self];
BANG!
Вот и все. Позвони и забудь.
Представление добавляет себя в качестве подпредставителя к родителю, а затем выполняет анимацию. И когда это сделано, он отсекает себя от ветви с [self removeFromSupeview];
. И чтобы убедиться, что процедура действительно может завершиться после этого, создайте изящную пару -retain и -autorelease, чтобы все это могло завершиться и вернуться до того, как оно действительно будет уничтожено.
Теперь какой-то ботаник год назад сказал мне: «Никогда не отрывайся от своей собственной ветви». Другими словами: представление никогда не должно удалять себя из суперпредставления, если на него больше нет ссылок.
Я хочу получить это, правда. ЗАЧЕМ? Подумайте об этом: трудным путем я бы сделал то же самое. Создайте экземпляр и повесьте меня в качестве делегата, запустите анимацию, и когда значок предупреждения завершит анимацию, он перезвонит мне: «Эй, чувак, я готов, избавься от меня!» - поэтому мой метод делегата вызывается с указателем на этот экземпляр, и я делаю то же самое: [thatWarningIcon removeFromSuperview]; - BANG.
Теперь мне бы очень хотелось узнать, почему это отстой. Жизнь была бы так проста.