В первую очередь
Вы не можете заставить никого не вызывать какой-либо метод, реализованный на объекте в Objective-C (по крайней мере, без прожигания нескольких десятков бритв, делающих Яков менее защищенными от атмосферных воздействий).
Только не вызывайте методы, которые не объявлены в публичных заголовочных файлах, как соглашение (это то, что вы уже делаете).
Второй
Слово public в вышеприведенном абзаце делает трюк:
В Objective-C (по крайней мере, в его текущем воплощении) интерфейс класса может быть определен для любого количества заголовочных файлов, используя технику, которую вы только что описали в своем посте: Продолжения класса.
Одним из таких примеров класса инфраструктуры Apple, который будет UIGestureRecognizer
с отдельным заголовком подкласса UIGestureRecognizerSubclass.h
.
PS:
Ошибка, которую вы видите, пахнет использованием ARC, поэтому ваша среда выполнения достаточно свежая, чтобы даже использовать для этого несколько файлов реализации.