0

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

一般问题:

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

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

该错误仅在我开始使用大字符串时才出现。在此之前从未发生过,这使我相信这可能与内存有关,并且在将字符串发送到 webview 后未在 Objective-c 中释放该字符串。

可能的解决方案

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

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

任何想法都非常感谢,因为这对我来说是一个真正的表演终结者:(

谢谢!

4

1 回答 1

0

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

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

从那时起,你负责那个字符串,当你完成它时你应该释放它。

于 2011-10-25T14:33:50.337 回答