FMDB,如何手动释放从stringForColumn创建的字符串

时间:2011-07-22 08:42:10

标签: objective-c ios sqlite nsstring fmdb

我正在使用FMDB,适用于iOS的SQLite Wrapper。

一般问题:

我正在从数据库中读取一个长字符串(Base64编码图像),然后将其发送到UIWebView进行显示。当我弹出视图控制器存储该webview(带有图像)时,程序意外退出:

([Controller respondsToSelector:]发送到解除分配的实例...顺便说一句,我没有调用该方法)

当我开始使用大字符串时,错误才会出现..它之前从未发生过,这让我相信它可能与内存有关,并且字符串在发送到Objective-c后没有被释放webview。

可能的解决方案

我想知道如何控制从FMDB的“stringForColumn”方法返回的字符串。我看待它的方式是我不能在结果字符串上调用release,因为我没有创建它。

我很确定我需要在发送到webview之后直接从内存中转储该字符串(通过stringByEvaluatingJavaScriptFromString)

任何想法都非常感激,因为这对我来说是一个真正的噱头:(

谢谢!

1 个答案:

答案 0 :(得分:0)

如果由于某种原因需要在内存中保留该字符串,则应调用

yourString = [[db stringForColumn:@"foo"]retain];

从那以后,你负责该字符串,你应该在完成它时释放。