Пожалуйста, сделайте себе одолжение и не смотрите на retainCount
, пытаясь узнать, как работают правила управления памятью.Вместо этого обратитесь к дружественному руководству по управлению памятью Apple .
. В ваших примерах:
NSArray *anArray =[[NSArray alloc]init];
Вы выделили "anArray" (вызывая alloc
), поэтомуВы ответственны за вызов release
.
anArray=[str componentsSeparatedByString:@","];
Теперь вы получили новый объект (утечка оригинала, как сказал Сеанд).На этот раз вы не являетесь владельцем объекта (поскольку componentsSeparatedByString
не имеет alloc
или copy
в его имени), поэтому вы не должны освобождать его.
Не беспокойтесь о том, что такое retainCountявляется;стремитесь к собственному вязанию и выпускайте предметы, которые вам следует, и не отпускайте объекты, которые вам не принадлежат.