У меня есть NSMutableArray * cityData, который я заполняю пользовательскими объектами LocationDetail.cityData создается в viewDidLoad и выпускается в dealloc.Где-то в коде, основанном на действиях пользователя, я заполняю LocationDetail и добавляю его в массив cityData:
LocationDetail* d = [[LocationDetail alloc] init];
d.city = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 1)];
d.tz = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 3)];
d.country = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 2)];
d._id = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 0)];
[cityData addObject:d];
[d release];
Когда я закончу с контроллером представления и удаляю его, утилита Leaks сообщает, что у меня есть утечкакод выше в NSCFString во всех 4 строках с [NSString stringWithFormat] выше.
Я попытался удалить материал sqlite3 и упростил вызов до чего-то вроде
d._id = [NSString stringWithFormat:@"%s", "a string"]
с тем же результатом.Однако, если я заменю строку NSStringWithFormat следующим образом:
d._id = @"a string";
, утечка исчезнет.Интересно, почему возникает утечка, если я использую stringWithFormat, но не если я использую @ "что-то".Есть ли что-то очевидное, что я делаю не так?
Спасибо!