Вы не очищаете переменную экземпляра array2 при входе reverseMethod. Каждый раз, когда вы вводите reverseMethod, объекты array1 добавляются снова.
Либо очистите массив 2 при входе reverseMethod, либо определите массив 2 локально в reverseMethod.
Элементы не меняются местами, потому что цикл for работает только тогда, когда i<[array1 count]
он должен работать до i > 0
. Вы хотите выполнить итерацию от последнего индекса массива1 до первого индекса, который равен нулю.
Также см. этот ответ , где приведен отличный пример обращения к NSArray.