1
我使用ARC。 我發現內存不斷增加。ios arc UILabel.text內存不斷增加
在.h文件中@property (weak, nonatomic) IBOutlet UILabel* contentALabel;
@property (weak, nonatomic) IBOutlet UILabel* contentBLabel;
在.m文件
-(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'有什麼問題?
'label.text'沒有問題,只是它保留了對'NSString'的強引用(但是它應該在設置新值時釋放先前的值)。您是否可能創建新的'contentALabel'和'contentBLabel'對象,而不對舊的'removeFromSuperview'進行操作? – Rob
永遠不會創造新的。 – lostin2010
我遇到了同樣的問題。在這裏描述:http://stackoverflow.com/questions/16495240/if-uilabel-text-different-chinese-strings-memory-leak –