【问题标题】:FMDB, How to manually release string created from stringForColumnFMDB,如何手动释放从 stringForColumn 创建的字符串
【发布时间】:2011-10-10 21:11:06
【问题描述】:

我正在使用 FMDB,iOS 的 SQLite 包装器。

一般问题:

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

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

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

可能的解决方案

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

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

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

谢谢!

【问题讨论】:

    标签: objective-c ios sqlite nsstring fmdb


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多