Ios 释放可为[NSNull]或不可为[NSNull]的对象
我有一个内存管理问题,我无法在iOS上动脑。我从SQLite数据库中获取数据,其中一些单元格可以是空的。因此,为了处理这种情况,如果为空,我将[NSNull null]分配给我的收件人,如果为空,则分配值:Ios 释放可为[NSNull]或不可为[NSNull]的对象,ios,memory-management,null,crash,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 *) s
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]时,它会使我的程序崩溃
所以我试过:
(id) email == [NSNull null] ? nil:[email release];
但它不工作(仍然崩溃,分析仪不喜欢它)。有什么想法吗
提前感谢我在这种情况下使用的是
nil
值。例如:
NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? nil : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)];
在这种情况下,您可以安全地拨打
[电子邮件发布];//电子邮件可以是NSString或nil
,所有内容都可以根据您的需要使用。谢谢,nil确实可以发布。然而,我发现您可以告诉SQLite在一个空单元格中放置什么值,所以我只选择放置一个空字符串而不是C NULL。为我保存一些代码!