Либо -autorelease
тот, который вы выделяете / init'd (потому что вы теряете ссылку на него, когда вы заменяете его на отсортированный массив), либо используйте другую переменную, например 'sortedTmpArray
'.
То, что вы сейчас делаете, это «создайте этот объект и присвойте ему tmpArray
», затем «создайте другой массив, отфильтровав его и присвоив ему tmpArray
». В этот момент у вас больше нет указателя на первый созданный вами массив, поэтому нет способа его освободить - он просочился.
Решение состоит в том, чтобы поместить его в пул автоматического выпуска при его создании или просто использовать два отдельных указателя. Кроме того, вы можете создать изменяемый массив в первый раз и использовать -sortUsingDescriptors:
для его сортировки вместо создания двух отдельных массивов.