我有一个内存管理问题我无法在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];
但它不起作用(仍然崩溃,分析师不喜欢它)。有什么想法吗?
提前致谢
答案 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
,所有内容都可以根据需要使用。