IOS инициализировать экземпляр внутри функции для использования вне - PullRequest
0 голосов
/ 12 сентября 2011

анализатор xcode сообщает, что метод возвращает объект Objective-C с счетом сохранения +1: enter image description here

, но self.athletes - это объект, который мне нужен также вне моей функции ..Как я могу решить это предупреждение?еще раз спасибо

спортсмены объявлены так:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Замените эту строку этой:

self.athletes = [NSMutableArray array];

Я написал полное объяснение здесь: Управление памятью для свойств с атрибутом сохранения

1 голос
/ 13 сентября 2011

Существует хороший способ справиться с этим (и вы уже использовали этот шаблон при создании пользовательского интерфейса).

NSMutableArray * athletesTemp = [[NSMutableArray alloc] init];

self.athletes = athletesTemp;

[athletesTemp release];

Здесь вам не нужно нести нагрузку объекта автоматического освобождения.

1 голос
/ 12 сентября 2011

Поскольку ваше свойство определено как «сохранить», использование точечной нотации приведет к дополнительному сохранению. Возвращение из [[NSMutableArray alloc] init] имеет счет сохранения 1, а затем, когда вы устанавливаете свойство с помощью функции установщика, сгенерированного объявлением свойства, он будет иметь счет хранения 2.

Чтобы исправить, либо:

self.athletes = [NSMutableArray array]; // Returns an autoreleased object

Или вы также можете сделать это:

athletes = [[NSMutableArray alloc] init]; // Doesn't use the setter generated by the property declaration, so doesn't retain again.
...