我使用 ARC 。 我发现记忆力不断增加。
<。>文件中的
@property (weak, nonatomic) IBOutlet UILabel* contentALabel;
@property (weak, nonatomic) IBOutlet UILabel* contentBLabel;
<。>文件中的
-(void)refreshContent:(NSInteger) itemID
{
sqlite3 *database;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString* databasePath = [docsPath stringByAppendingPathComponent: @"Database.sqlite"];
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
NSString *sql = [NSString stringWithFormat:@"select contentA,contentB from tableA where itemID = %d ",itemID,nil];
char *sqlStatement = (char *)[sql cStringUsingEncoding:NSASCIIStringEncoding];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSString *contentA = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *contentB = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
contentALabel.text = contentA;
contentBLabel.text = contentB;
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
我不断调用此函数,我在“配置文件”窗口的“生活字节”列中找到了内存增加。
但如果我发表评论
contentALabel.text = contentA;
contentBLabel.text = contentB;
内存不再增加。
' Label.text '有什么问题?
答案 0 :(得分:0)
底线,为text
设置UILabel
属性无法解释此行为。我倾向于完成涵盖here的一系列建议。具体来说,查找泄漏,如果找不到,请使用分配工具来识别正在创建的内容(显然未发布)。我还会输入一个断点,然后在调试器中键入“po [[UIWindow keyWindow] recursiveDescription]
”,并确保没有将额外的视图/控件添加到窗口层次结构中。
我知道这不会是一个令人满意的答案,但你只需花一点时间在仪器上,寻找泄漏,如果不明显,只需确定明显不是的分配获得释放。