Я написал это, чтобы объяснить EXC_BAD_ACCESS
http://www.loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html
По сути, вы (вероятно) либо отправляете сообщения освобожденным объектам, либо каким-либо образом повреждаете кучу. Когда безобидный вызов вызывает EXC_BAD_ACCESS, это почти всегда приводит к повреждению памяти.
Вы никогда не вызываете release или dealloc в этом коде, поэтому маловероятно, что этот код может вызвать отправку сообщений на освобожденные объекты.
Так что, вероятно, все, что вызывает EXC_BAD_ACCESS, произошло до этого кода. Вы можете доказать это, переместив этот код в самом начале вашего приложения - это, вероятно, будет работать. Если нет, то вам действительно нужно проверить этот код, но если он работает, то это нечто среднее между этими точками.
Вероятно, наиболее эффективный способ найти повреждение - включить Malloc Debug и затем следовать инструкциям в моем блоге, чтобы использовать отладчик для поиска строки, которая вызывает поврежденную кучу.