Когда выпустить NSString в iPhone

Это действительно отражает то, что вы написали в своем классе машинописи Circle.

Если вы хотите иметь доступ к атрибуту r из Circle, я не понимаю, почему у вас также есть личный атрибут.

Ваша модель должна быть просто:

export class Circle {
  C: number;
  r: number;
}
13
задан andynormancx 2 March 2009 в 12:53
поделиться

2 ответа

Как epatel сказал, Вы не должны выпускать ту конкретную строку. Если бы Вы хотели быть более превентивными, то Вы могли бы сделать это вместо этого:

-(NSMutableArray *) getPaises {
    NSMutableArray * paises;
    paises = [[[NSMutableArray alloc] init] autorelease];
    while( get new row ) {
        NSString *aPais =  [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
        [paises addObject:aPais];
        [aPais release];
    }
    return paises;
}

Таким образом:

  • [[Выделение NSString] initWith...]-> необходимо выпустить или автовыпустить.

  • [NSString stringWith...]-> Никакая потребность выпустить.

- Редактирование: добавленный autorelease для пчел, поскольку Вы возвращаете его. Когда Вы возвращаете объект, всегда автовыпускаете его, если у Вас есть alloc&init'd он.

16
ответ дан 1 December 2019 в 22:40
поделиться

stringWithUTF8String: возвращает строку автовыпуска, которая будет выпущена автоматически Какао в следующем eventloop. Но строка также сохраняется в массиве, когда Вы делаете addObject:... таким образом, пока это находится в массиве, это будет сохранено.

5
ответ дан 1 December 2019 в 22:40
поделиться