【发布时间】:2015-08-28 08:44:26
【问题描述】:
我正在使用带有 ARC 的 Objective C。我有以下 sn-p 代码,由于字符串格式化程序,它似乎泄漏了内存。
我将stringWithFormat便捷方法更改为更通用的alloc init,但它仍然在这一行泄漏内存。
我读到 here 我应该使用 copy 关键字,但它仍然在这一行中泄漏内存。
现在,当我完全删除格式化程序时,此行中的代码不会泄漏内存。
- 为什么这条线会导致内存泄漏?
- 如何解决此内存泄漏问题?
附加信息:
- 代码编写于:Xcode 6.3.1
- 使用 Xcode 6.3.1 中的 Instruments 可视化内存泄漏
- 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 的班级,我在 Github 上找到的。
【问题讨论】:
-
只有代码的图像会使尝试代码容易出错。示例代码未提供
DATABASE_NAME,因此无法再次测试代码。 -
Xcode 6.3.1 不提供部署目标 iOS 5 那么如何选择呢?
-
项目设置对所有未覆盖设置的目标有效。
标签: ios objective-c memory-leaks string-formatting instruments