В моем приложении есть несколько объектов, которые в какой-то момент могут стать нулевыми, и у меня есть методы, которые теоретически используются для приведения этих объектов к нулю.
Но, если я попытаюсь обнулить объект, который не существует, приложение упадет.
например ...
[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)
}
возможно ли это?
Я добавил это, чтобы прояснить ...
Я имею в виду следующее: представьте, у меня объект1 объявлен в заголовке и инициализирован в коде. Таким образом, он существует и указывает на действительную ссылку. В какой-то момент объект может быть освобожден, поэтому ссылка все еще указывает на объект, но объект был освобожден. Даже если я отпущу объект до нуля после освобождения, я ничего не могу с ним поделать.
Проблема заключается в следующем: у меня есть несколько асинхронных методов. Один из них сканирует некоторые объекты и удаляет их, если они найдены. Я должен проверить, существует ли объект и ссылка указывает на действительный объект, прежде чем отпустить его снова. В этом суть: как мне проверить, существует ли объект и указывает ли он на действительный существующий объект перед его повторным освобождением, чтобы аннулировать повторное освобождение уже освобожденного объекта и вызвать сбой приложения.