iPhone, память / авто-релиз объектов - PullRequest
1 голос
/ 09 апреля 2010

Я немного обеспокоен созданием большого количества автоматически выпущенных объектов на iPhone. Мое приложение простое, поэтому оно не должно вызывать проблем, но я просто хотел проверить правильность и приемлемость методов (как показано ниже)

-(NSNumber *)numberFromCore {
    NSNumber *removedNumber = [[dataCore objectAtIndex:0] retain];
    [dataCore removeObjectAtIndex:0];
    return [removedNumber autorelease];
}

-(NSString *)coreSizeAsString {
    NSString *coreSize = [NSString stringWithFormat:@"%d", [dataCore count]];
    return coreSize;
}

Там, где это возможно, я использовал [[Class alloc] init] и [Class release], но я должен также попытаться изменить методы удобства, как те, что указаны выше.

1008 * Гэри *

Ответы [ 2 ]

2 голосов
/ 09 апреля 2010

Удобные методы, подобные показанным вами, должны возвращать объекты, которые не принадлежат вызывающей стороне, что в обоих этих случаях означает автоматически высвобождаемые объекты, поэтому ваш код правильный.

0 голосов
/ 09 апреля 2010

Если вас беспокоит большое количество автоматически выпущенных объектов, создайте NSAutoReleasePool перед входом в цикл. После завершения цикла -drain пул. Это минимизирует время хранения автоматически выпущенных объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...