Как удалить объект UIView с экрана?

#iphone #ipad

#iPhone #iPad

Вопрос:

Я создал образец приложения, в котором я создал некоторый класс, унаследованный от NSObject class для определения различных атрибутов и свойств моего объекта. Теперь у меня есть подкласс a UIView , и я также могу отображать этот объект на экране моего iphone.

Теперь у меня возникает проблема всякий раз, когда я хочу удалить треугольник, который я обычно вызываю [self removeFromSuperview]; , и он удаляет представление с моего экрана.

Но это просто удаление представления с экрана, а не полное удаление объекта.

Как я могу полностью удалить объект?

Комментарии:

1. отправить сообщение об освобождении объекту

Ответ №1:

Из того, что я понял из вашего описания — как насчет:

 [self removeFromSuperview];
[self release];
  

Это работает? В качестве альтернативы, вы должны поместить такую логику в свой контроллер просмотра. Затем, есть ли у вас ссылка на объект (скажем, MyObject), затем используйте:

 [myObject removeFromSuperview];
[myObject release];
  

Удаление из super view не означает удаления этого объекта. Ваш объект может работать без подключения к иерархии UIView.

РЕДАКТИРОВАТЬ: (чтобы конкретизировать комментарий Питера Дьюиза)

Когда вы создаете UIView, вы можете сделать это:

 MyView* view = [[MyView alloc] initWithFrame:myViewRect];
[mySuperView addChild:view];
[view release];
  

Это означает, что вы больше не являетесь владельцем view, но super view имеет. Супер просмотр сохраняет ваш вид, когда он добавлен как дочерний, и вы отказываетесь от него с выпуском. Позже, когда вы сделаете:

 [self removeFromSuperview];
  

Количество сохранений упадет до 0, и ваш объект будет удален автоматически.

Хорошая идея, Питер!

Комментарии:

1. И если он не был сохранен вами, вам даже не нужно будет его освобождать. При добавлении в superview он сохраняется, а при удалении освобождается.

2. Питер, я отредактировал свой приведенный выше ответ, чтобы интегрировать ваш ответ. Если бы я мог проголосовать за комментарии, я бы 🙂