我正在尝试对一系列国家进行排序。这种方式有效,但我无法弄清楚释放tmpArray的方法。我该如何发布它并且有更好的方法吗?
// PUT COUNTRIES IN ARRAY
NSString *myFile = [[NSBundle mainBundle] pathForResource:@"Countries" ofType:@"plist"];
NSArray *tmpArray = [[NSArray alloc] initWithContentsOfFile:myFile];
tmpArray = [tmpArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
arrayCountries = [[NSArray alloc] initWithArray:tmpArray] ;
// [tmpArray release];
答案 0 :(得分:2)
-autorelease
你分配/初始化的那个(因为当你用排序的数组替换它时你失去对它的引用)或者使用另一个变量,如'sortedTmpArray
'。 / p>
您目前正在做的是“创建此对象并将其分配给tmpArray
”,然后“通过过滤此对象创建另一个阵列并将其分配给tmpArray
”。此时,您不再有指向您创建的第一个数组的指针,因此无法释放它 - 它已泄露。
解决方案是在创建它时将其放在自动释放池中,或者只使用两个单独的指针。或者,您可以在第一次创建可变数组,并使用-sortUsingDescriptors:
对其进行排序,而不是创建两个单独的数组。