【问题标题】:Question about NSLog and where to handle a loading file关于 NSLog 以及在哪里处理加载文件的问题
【发布时间】:2011-03-16 05:41:04
【问题描述】:

在我的代码中,我使用 .txt 文件构建了一个 Data Core 数据库。目前我在桌面上有该文件,并且有该文件的硬编码路径。我还使用 NSLog 语句跟踪数据库的负载,该语句在我加载新数据库时显示在终端中。构建和分析指出,我在 NSLog 的“存储到 xx 的值永远不会读取”中用于跟踪的参数。但是,我确实在 NSLog 中使用 xx 来计算我正在加载的记录。

我在输入字段中使用了一个秘密且非常长且特定的单词来启动数据库的加载。该字段通常用于其他用途。

我有以下问题:

  • “存储到 xx 的值永远不会被读取”是否被视为泄漏?我猜不是。

  • 在启动应用程序以使 NSLog 和 xx 仍在代码中时是否存在问题,或者我应该将其注释掉吗?

  • 我在 Apple 的文档中读到它不允许在捆绑包之外引用,我猜如果我想使用这种方法,我也应该将 .txt 放在捆绑包中?

  • 因为我不希望 .txt 文件包含在包中,所以对于管理数据库负载有什么建议?我应该加载数据库,然后可能注释掉我发送到应用商店的代码中的所有相关代码以删除应用外部的引用还是有更好的方法?

干杯

【问题讨论】:

    标签: iphone file-upload nslog


    【解决方案1】:
    • “存储到 xx 的值永远不会被读取”消息

    此消息不是泄漏。这是一个提示,您正在将变量设置为一个值,然后永远不会读取该值(因此首先设置变量是没有意义的)。示例:

    - (void) fooFun {
        int i = 1;
        NSLog(@"Hello: %d", i);
        i = 3; // <- value stored to i is never read (thus this line is redundant)
        return;
    }
    
    • 启动包含 NSLog 的应用时出现问题

    不,Apple 确实建议删除 NSLogs,但这不是 AFAIK 所必需的。我可能错了,因为我使用的宏会从发布版本中删除所有 NSLog。 IIRC,这篇博文为我描述了它:http://www.karlkraft.com/index.php/2009/03/23/114/

    • 在包外引用

    这是一个奇怪的问题。如果您打算将您的应用程序放到应用程序商店,其他人很可能会抢到它,而他们不会拥有您的文件。 iPhone 本身也无法访问您的桌面。不过,为了争论,您可能会在您的应用中创建一个设置,让用户定义该文件所在的路径。

    希望对您有所帮助。

    【讨论】:

    • Kalle,tx 为您解答。嗯,意思是除了我之外,没有人可以访问 .txt 文件。
    • 所以它是一种应用程序使用但只有您可以查看和修改的数据库?将它与应用程序捆绑在一起是尽可能安全的。将它放到网上,人们将能够从浏览器中获取它。如果人们解压您的应用数据并检查,他们会找到该文件,但仅此而已。您可能希望考虑加密 iPhone 捆绑包中的文件,然后在需要时以某种方式对其进行解密,但这也有其缺点。
    • 感谢 Kalle,情况是我只想将 .txt 文件用于一件事,并将其用作数据库的来源。我将数据写入 .txt 文件,然后从那里加载数据库。理想的做法是在我上传应用程序时不包含 .txt 文件。
    • 如果没有更多的信息或细节,我不能给你比我已经有的更多的建议。不过,听起来您想重新考虑 .txt 文件的交易。
    • Kalle,我正在为如何从应用程序外部填充数据库而苦苦挣扎。我目前这样做的方法是 1.) 输入 .txt 文件,2.) 在应用程序中使用秘密密码从当前驻留在我桌面上的 .txt 文件加载数据库。顺便说一句,我也是瑞典人。
    猜你喜欢
    • 2011-08-01
    • 2013-03-27
    • 1970-01-01
    • 2013-02-07
    • 2011-05-09
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多