释放一个可以为 [NSNull null] 或非 [NSNull null] 的对象
我遇到了内存管理问题,无法在 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 空]。
所以我尝试过:
(id) email == [NSNull null] ? nil:[email release];
但它不起作用(仍然崩溃并且分析器不喜欢它)。有什么想法吗?
提前致谢
I have a memory management problem I can't get my head around on iOS. I'm getting data from a SQLite db where some cells can be empty. So to handle this case, I assign [NSNull null] to my recipient if empty, or the value if not:
NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? [NSNull null] : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)];
But then if I do that:
[email release];
the analyser doesn't like it and I think it crashes my program when the object is actually [NSNull null].
So I've tried:
(id) email == [NSNull null] ? nil:[email release];
But it doesn't work (still crashes and analyser doesn't like it). Any ideas?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下我使用的是
nil
值。例如:在这种情况下,您可以安全地调用
[电子邮件发布]; // email 可以是 NSString 或 nil
并且所有内容都会根据您的需要工作。I'm using in that case
nil
value. For example:In such case you can safely call
[email release]; // email can be NSString or nil
and all will work as you need.