Вы можете зашифровать файлы с помощью любого количества механизмов, но если вы хотите, чтобы клиент мог собирать и запускать код, это не будет практичным, поскольку ему придется расшифровывать его.
Если вы хотите сделать это без предоставления клиенту исходного кода, создайте статическую библиотеку, распространите эту статическую библиотеку, которая связывается вместе с шаблоном main.m, в ваш конечный исполняемый файл, установите ее в качестве основы для ссылки на образец приложения, которое вы отправляете им. Таким образом, они не получают исходные тексты для приложения, но все же могут собрать его и посмотреть, что происходит.
Кстати, если вы не доверяете своему клиенту, почему вы взяли работу на первое место?