释放可以[NSNull null]的对象

时间:2011-09-28 06:16:28

标签: ios memory-management null crash

我有一个内存管理问题我无法在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 :(得分:0)

我在那种情况下使用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,所有内容都可以根据需要使用。