Ошибки такого рода обычно связаны с управлением памятью. По сути, вы отправляете сообщение на адрес, который сейчас занят каким-либо другим объектом, поскольку предыдущий пользователь неожиданно исчез. Поскольку это адресное пространство может быть занято чем-либо, вы просто запрашиваете NSCFString что-то, на что он не отвечает.
Если вы остановите отладчик сразу после создания временного массива, что, по вашему мнению, будет назначено временному массиву? Я предполагаю, что что-то не так с тем, что возвращает -keysArray. Возможно, вы захотите перепроверить, как обрабатывается память во всем, что предполагается вернуть. По названию, я полагаю, ваш делегат приложения имеет массив с именем «keysArray» в качестве переменной экземпляра. Возможно, он не сохраняется должным образом при его создании или назначении?