В моем приложении есть несколько объектов, которые в какой-то момент могут обнулиться, и у меня есть методы, которые теоретически используются для обнуления этих объектов.
Но если я попытаюсь обнулить несуществующий объект, приложение вылетит.
Например...
[object1 release];
object1 = nil;
//... и после этого
[object1 removeFromSuperview]; // this will crash
Затем я подумал, почему бы не проверить, существует ли объект перед удалением...
if (object1 != nil)
[object1 removeFromSuperview];
// this will crash too, because object1 cannot be tested for nil because it does not exist
Как я могу проверить, существует ли объект перед проверкой, если он равен нулю? что-то вроде
if (object1 exists( {
if(object1 != nil))
[object1 removeFromSuperview)
}
Это возможно?
Я ДОБАВИЛ ЭТО ДЛЯ ПОЯСНЕНИЯ...
я имею в виду следующее: представьте, что у меня есть object1, объявленный в заголовке и инициализированный в коде. Итак, он существует и указывает на действительную ссылку. В какой-то момент объект может быть освобожден, поэтому ссылка по-прежнему указывает на объект, но объект был освобожден. Даже если я обнулю объект после освобождения, я ничего не смогу с ним сделать.
Проблема в следующем: у меня есть некоторые методы, которые являются асинхронными. Один из них сканирует некоторые объекты и удаляет их, если они будут найдены. Я должен проверить, существует ли объект и указывает ли ссылка на действительный объект, прежде чем снова его отпустить. В этом суть: как мне проверить, существует ли объект и указывает ли его ссылка на допустимый существующий объект, прежде чем снова его выпускать, чтобы отменить повторное освобождение уже выпущенного объекта и привести к сбою приложения.