Ios 字符串格式化程序内存泄漏

Ios 字符串格式化程序内存泄漏,ios,objective-c,memory-leaks,string-formatting,instruments,Ios,Objective C,Memory Leaks,String Formatting,Instruments,我使用的是带有弧的Objective C。我有以下代码片段,它似乎由于字符串格式化程序而泄漏内存 我将stringWithFormat便利方法更改为更通用的alloc init,但它仍然会泄漏此行的内存 我读到我应该使用copy关键字,但它仍然在这行中泄漏内存 现在,当我完全删除格式化程序时,代码不会泄漏此行中的内存 为什么这条线会导致内存泄漏 如何解决此内存泄漏 其他信息: 编写代码:Xcode 6.3.1 使用Xcode 6.3.1中的仪器可视化内存泄漏 iOS部署目标:iOS 5

我使用的是带有弧的Objective C。我有以下代码片段,它似乎由于字符串格式化程序而泄漏内存

我将
stringWithFormat
便利方法更改为更通用的
alloc init
,但它仍然会泄漏此行的内存

我读到我应该使用
copy
关键字,但它仍然在这行中泄漏内存

现在,当我完全删除格式化程序时,代码不会泄漏此行中的内存

  • 为什么这条线会导致内存泄漏
  • 如何解决此内存泄漏
  • 其他信息:

    • 编写代码:Xcode 6.3.1
    • 使用Xcode 6.3.1中的仪器可视化内存泄漏
    • iOS部署目标:iOS 5.0
    代码库:

    #define DATABASE_NAME           @"orderwriter"
    
    + (SQLiteManager *) getSQLiteManager
    {
        // NSInteger userId = [(NSString *)[AppUtil NSDefaultforKey:USER_ID] integerValue];
        // NSString *dbName = [NSString stringWithFormat:@"%@_%ld.db", DATABASE_NAME, (long)userId];
        NSString *dbName = @"orderwriter_58.db";
        SQLiteManager *dbManager = [[SQLiteManager alloc] initWithDatabaseNamed:dbName];
        return dbManager;
    }
    

    我在这里找到的类
    SQLiteManager

    stringWithFormat方法返回一个自动删除的对象。直到释放池中的水排干,它才会释放。你是在后台运行线程吗?如果是这样,您可能需要在线程代码的开头创建一个自动释放池,并在完成后将其耗尽

    如果不是的话,我不知道你为什么会泄密。ARC应正确处理该字符串的所有权。这可能是一个编译器错误。您使用的是什么版本的Xcode


    如果这不是自动释放池的问题,那么你可能应该向苹果公司提交一个雷达bug。

    只有代码的图像使得尝试代码容易出错。示例代码未提供
    数据库\u名称
    ,因此无法再次测试代码。Xcode 6.3.1未提供部署目标iOS 5,那么您如何选择它?项目设置对所有未覆盖其设置的目标有效。可能。对于@physicalattraction,数据库名称是一个
    \define
    d常量还是一个宏?发布定义。我不是在后台线程中运行这段代码。我添加了
    数据库名称的定义和文本格式的相关代码。