Этот код пропустит память. Вы переназначаете dataArray, не освобождая старое значение.Выполните присваивание через сгенерированное свойство, и старое значение будет выпущено первым.
else
{
dataArray=[appDelegate selectFromDatabase:a];
}
Вы также можете реструктурировать свой код, чтобы избежать создания массива, если он вам действительно не нужен:
if (condition)
{
// Create array here
}
else
{
// get array from other place
}