Выше нет утечки. может иметь одну или несколько утечек в частях, которые вы удалили, и заменить на "someCondition" и "Doing Some stuff here", но никто здесь не может помочь с этим, если вы не опубликуете complete код, который вы действительно тестируете с помощью инструментов.
Также: "// При освобождении данных (потому что data retainCount = 2) ..." Стоп. Правильно. Там. Игнорировать retainCount. Вы освобождаете объект, потому что создали его, используя метод, который подразумевает владение, или потому что вы сохранили его. Вы НИКОГДА не выпускаете объект только потому, что его retainCount имеет значение, которое вы не ожидали или не понимаете. Прочитайте Apple Руководство по программированию управления памятью для подробностей.