Если вы посмотрите предупреждение из Build and Analyze, вы заметите, что предупреждение действительно относится к строке 38 вашего кода, а не к строке 39, в которой отображается сообщение.
On line38 вы звоните alloc
, то есть вы выделяете память для UIImageView
.
Каждому alloc
, new
, copy
и retain
требуется соответствующий release
или autorelease
.Итак, компилятор предупреждает вас, что вы вызвали alloc
, но нигде не вызвали соответствующий release
.
Вы можете добавить autorelease
в строку 38 следующим образом:
self.tableView.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Back_01.jpg"]] autorelease];
Если вы не хотите использовать autorelease
, тогда вы можете использовать что-то вроде этого:
UImageView *bgImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Back_01.jpg"]];
self.tableView.backgroundView = bgImage;
[bgImage release];
Единственное реальное отличие состоит в том, что autorelease
ожидает до конца цикла выполнения, когдапул авто-релиза сливается, тогда как вызов release
потенциально освободит память раньше.