Проблема в том, что вы выделили строку NSString, но затем вы не освобождаете ее. Вы пытаетесь освободить строку, назначенную вами с кодом aString = @"..."
.
Поскольку первое присваивание aString никогда не используется, вам не нужно давать aString значение, как отмечено в другом ответе (который также не выполняет освобождение, поскольку строки являются статически распределенными константами)
Если строка имеет использованное значение, вам следует поменять местами назначение и освободить. например,
int x = 0;
NSString *aString = [NSString alloc]init]; <-- value store to 'aString' during its initialization is never read
// do something with aString
[aString release];
if(x == 0)
{
aString = @"This is a string set by x being 0";
} else
{
aString = @"This is a string set by x being something else";
}
aTextLabelOutlet.text = aString;
Или я буду использовать автоматически выпущенную строку, чтобы во время выполнения выполнялось освобождение, т. Е.
NSString *aString = [[[NSString alloc]init]autorelease];
или лучше использовать один из методов класса constructer
NSString *aString = [NSString string];