Ios 字符串格式化程序内存泄漏
我使用的是带有弧的Objective C。我有以下代码片段,它似乎由于字符串格式化程序而泄漏内存 我将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
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常量还是一个宏?发布定义。我不是在后台线程中运行这段代码。我添加了数据库名称的定义和文本格式的相关代码。