Я только что столкнулся с подобной проблемой, так что вот еще один пример того, что может привести к сбою такой проверки, как ваша.
В моем случае я получал значение из словаря, например:
NSString *text = [dict objectForKey:@"text"];
Позже я использовал переменную, подобную этой:
if (text) {
// do something with "text"
}
Это привело к ошибке EXC_BAD_ACCESS
и падению программы.
Проблема заключалась в том, что мой словарь использовал значения NSNull
в тех случаях, когда объект имел пустое значение (оно было десериализовано из JSON), поскольку NSDictionary
не может содержать значения nil. Я закончил работать вокруг этого так:
NSString *text = [dict objectForKey:@"text"];
if ([[NSNull null] isEqual:text]) {
text = nil;
}