Освобождение объекта, который может быть [NSNull null] или нет - PullRequest
0 голосов
/ 28 сентября 2011

У меня проблема с управлением памятью, я не могу разобраться с iOS.Я получаю данные из базы данных SQLite, где некоторые ячейки могут быть пустыми.Поэтому для обработки этого случая я назначаю [NSNull null] своему получателю, если он пуст, или значение, если нет:

NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? [NSNull null] : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)];

Но тогда, если я это сделаю:

[email release];

анализатору это не нравится, и я думаю, что он ломает мою программу, когда объект на самом деле [NSNull null].

Итак, я попробовал:

(id) email == [NSNull null] ? nil:[email release];

Но это не работает(все еще вылетает и анализатору это не нравится).Есть идеи?

Заранее спасибо

1 Ответ

0 голосов
/ 28 сентября 2011

Я использую в этом случае nil значение.Например:

NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? nil : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)];

В таком случае вы можете смело звонить [email release]; // email can be NSString or nil и все будет работать как вам нужно.

...