Это для iPhone-приложения, написанного на Objective-C с использованием Xcode 4.
Быстрый вопрос: если у вас есть функция, которая возвращает NSArray, который был ALLOC'ed в этой функции, нужно ли вамвыпустить его?
Вот более подробный вопрос.
Я запускаю «Анализ» в своем приложении для iPhone, и он жалуется на возможную утечку памяти в одной из моих функций
Функция создает NSArray из NSMutableArray и возвращает NSArray.Что я делаю, так это беру NSMutableArray объектов класса и создаю NSArray NSStrings из них.Я максимально упростил код, чтобы показать проблему, поэтому не беспокойтесь, если он выглядит так, как будто он ничего не делает.
-(NSArray *)encodeArray
{
// I use a NSMutableArray here because I do not know how big the starting
// array will be (I hard coded the 20 here for now)
NSMutableArray *tmp = [[NSMutableArray alloc]init ];
for (int y = 0;y<20;y++) {
// create the NSString object and add it to the tmp array
NSString *cardcount = [NSString stringWithFormat:@"%i%",y];
[tmp addObject:cardcount];
}
// create the array we will be returning out of the NSMutableArray
NSArray *array = [[NSArray alloc] initWithArray:tmp copyItems:YES];
// release the tmp array we created.
[tmp release];
// return our array
// This is the location of the potential memory leak. SHOULD I RELEASE THIS
// If I DO - HOW DO I RETURN IT.
return array;
}
Нужно ли освобождать массив?Если так, как я могу все еще возвратить это?Может быть, есть лучший способ выполнить то, что я делаю?
Общая цель - создать NSArray, чтобы я мог использовать NSUserDefaults для сохранения состояния приложения.