Эта строка:
NSString *address = [NSString stringWithFormat:@"%@", [defaultServer root]];
И все следующие строки работают с автоматически выпущенными NSString
s, предоставленными методами stringWithFormat:
и stringByAppendingFormat:
.Вы не должны выпускать address
вручную, так как пул авто-выпусков будет обрабатывать это для вас.
А здесь:
NSString *response = [[NSString alloc] init];
response = [self getResponseFromWebAddress:address];
Вы выделяете новый NSString
, затемнемедленно указав переменную response
на другую строку, которая автоматически освобождается ([self getResponseFromWebAddress:address]
).Выделенный объект больше не имеет доступных указателей, поэтому вы больше не можете его освободить, и поэтому он протекает.
Чтобы исправить обе проблемы, удалите строку alloc-init и строки release.Ваша строка address
также может быть инициализирована одним оператором:
// Combine all three arguments into one format string
NSString *address = [NSString stringWithFormat:@"%@%@?%@",
[defaultServer root],
[defaultServer login],
[params urlEncodedString]];
NSString *response = [self getResponseFromWebAddress:address];
// No need to release either variable