Две части к этому вопросу
1) Это понимание того, что происходит правильно?
«if (obj)» проверяет, не является ли указатель 0x0, то есть установлен в целочисленный адрес памяти
«if (obj! = nil)» сравнивает адрес памяти объекта с адресом памяти универсального объекта nil
2)
Так что в ситуации, когда я не знаю, указывает ли переменная на что-либо, и если это так, я также не знаю, является ли этот объект допустимым объектом или нулем. Я хочу делать разные вещи, основываясь на этой информации, а не просто передавать сообщение в obj, которое, как я понимаю, было бы безопасно, если бы оно было нулевым. Является ли этот код правильным и необходимым?
if (obj && obj != nil) {
// Do a bunch of things that should only happen if obj is pointing to a valid object
[obj someMessage];
[anotherObj someOtherMessage];
}
Спасибо, ребята!