У меня есть несколько объектов в моем приложении, которые в какой-то момент могут стать нулевыми, и у меня есть методы, которые теоретически используются, чтобы поместить эти объекты в нуль.iphone - тестирование, если существует объект
Но, если я попытаюсь положить в нуль объект, которого не существует, приложение будет аварийно завершено.
, например ...
[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 заявил на заголовок и инициализируется на коде. Таким образом, он существует и указывает на действительную ссылку. В какой-то момент объект может быть выпущен, поэтому ссылка все же указывает на объект, но объект был освобожден. Даже если я положил объект на нуль после выпуска, я ничего не могу с этим поделать.
Проблема заключается в следующем: у меня есть несколько методов, которые являются асинхронными. Один из них сканирует некоторые объекты и удаляет их, если они найдены. Я должен проверить, существует ли объект, и ссылка указывает на действительный объект, прежде чем его снова отправить. В этом и заключается суть: как проверить, существует ли объект, и его ссылка указывает на действительный существующий объект, прежде чем его снова освободить, чтобы снова освободить объект, который уже выпущен, и сбой приложения.
Вы имеете в виду «object1» везде, где у вас есть «объект»? Я так полагаю. – itsmatt
Я уточнил исходный вопрос. Благодарю. – SpaceDog
Вы смешиваете использование терминов указатель, ссылку и объект. Эти термины имеют очень разные значения. Если вы не понимаете различий между ними, это поможет вам ознакомиться с программированием на C. Если вы их понимаете, это поможет вашим читателям, если вы будете более осторожны с вашим использованием. Из-за этого ваш пост немного трудно читать. – glorifiedHacker