Если ваш фоновый поток выполняет некоторую работу и ему нужно «передать» NSArray
в ваш основной поток, то все, что нужно сделать doneLoading:
-(void)doneLoading:(NSArray *)obj
{
[myArray release]; // release the previous array and its objects
myArray = [obj retain];
// now use myArray, refresh tables, etc.
}
Нет необходимости создавать еще одну копию массива, и это может быть основной проблемой. Вы также должны позвонить [temp release]
после вашего performSelector
вызова, поскольку аргументы для этого уже сохранены.
Если содержимое myArray
каким-то образом становится действительным, то его куда-то выпускают вдвойне. myArray
сохранит любые объекты, добавленные к нему. Вы упомянули, что myArray
сам становится недействительным, поэтому попробуйте переписать фоновый поток и метод doneLoading с помощью этого шаблона.
Наконец, вы должны использовать [pool drain]
вместо [pool release]
.