Во-первых, Apple Руководство по программированию управления памятью - отличное место для поиска примеров и инструкций по управлению памятью.
Теперь к вашему вопросу.Когда вы вызываете myString = [[NSString alloc] init];
, вы переназначаете указатель myString
и, таким образом, теряете доступ к исходному NSString
, что приводит к утечке памяти.
Общее правило здесь таково, что для каждого alloc
у вас должно быть release
, и они должны чередоваться соответствующим образом.Если вы сделаете
myString = [[NSString alloc] init];
// ...
myString = [[NSString alloc] init];
// ...
[myString release];
[myString release];
, вы дважды отпустите один и тот же экземпляр, что приведет к перевыпуску и ошибке BAD-ACCESS.Правильнее всего сделать
myString = [[NSString alloc] init];
// ...
[myString release];
myString = [[NSString alloc] init];
// ...
[myString release];
, чтобы каждый экземпляр был правильно освобожден.