У меня был супер нубский вопрос о назначении объектов в target-c.Я в основном пытаюсь создать массив миниатюр для использования.У меня есть этот код из другого поста.
+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
В моем viewDidLoad я делаю это:
// Create thumbnail images to be used in UITableView.
NSMutableArray *imageArray = [[NSMutableArray alloc] initWithCapacity:[_list count]]; // list is an array that has my data
for (id *test in _list) {
UIImage *cardImage = [UIImage imageNamed:test.ImageFile]; // line 1
cardImage = [UIImage scale:cardImage toSize:CGSizeMake(50, 50)]; // line 2
[imageArray addObject:cardImage]; // line 3
}
self.List = imageArray;
[imageArray release];
Мой вопрос касается внутри цикла for.Это мое понимание того, как это работает, пожалуйста, поправьте меня, если я ошибаюсь.
В строке 1 создается авторелизированный UIImage с именем cardImage.
Строка 2 создает еще один UIImage из scale: toSize: метод.(Я не уверен, является ли этот UIImage автоматически выпущенным или нет).cardImage теперь указывает на этот новый UIImage, созданный в строке 2, и позднее автоматически очищенный UIImage из строки 1. будет очищен.
Строка 3 добавляет этот новый объект в imageArray.
Я не был уверенесли это было правильно / неправильно / хорошо / плохо и т. д. Я знаю, что с примитивными типами в методе вы можете сделать
int x = 5;
x = 10;
Но я не был уверен, создавал ли здесь утечку памяти, выполняяэто, и если бы был лучший метод.Большое спасибо!