2014-11-08 4 views
2

Каждый так часто я начинаю немного «вспомогательный класс» и обнаруживаю, что могу полностью покрыть свои потребности функциями C (хотя эти функции часто могут иметь ObjC в пределах их, возможно, тип возврата или некоторые аргументы NSDictionary * или что-то еще ..), и поэтому я удалю @implementation и @interface, и там вообще нет класса, просто .h и .m файлы.Файлы ObjC, содержащие только C (или минимальные ObjC ..)

Какова наилучшая практика, должен ли я изменить файл .m в файл .c? Или это невозможно/сложно с объектами ObjectiveC? Есть ли какая-либо польза от использования другого типа файла, о котором я не знаю, или что я делаю все нормально? (Я разрабатываю только для OSX и прошивки, и полностью с Xcode, по крайней мере сейчас.)

спасибо за ваше время :)

+3

Не требуется, чтобы исходный файл Objective-C (.m) включал интерфейс класса или реализацию. Если код использует язык Objective-C, то он является исходным файлом Objective-C и должен быть назван с расширением .m. –

+0

thanks @KenThomases – Jef

+1

Возможно, вы могли бы использовать методы класса вместо функций? – Antzi

ответ

2

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

Если вы выбрали файл в Xcode и открыли правую панель, вы можете позволить Xcode знать, как разбирать этот файл. Итак, если у вас есть ObjectiveC в вашем .c файле, вы можете изменить тип Parse из файла C в файл ObjC, и все будет работать правильно.

+0

Спасибо Джеймсу. Это действительно аналогично файлу main.m, который является только функцией c, но имеет объект appDelegate внутри этой функции. Отличная точка – Jef

+0

Итак, я думаю, что я делаю то, что делает Apple, вы получаете очки, спасибо – Jef

+1

«Объектный файл» - это скомпилированный исходный файл, вход в компоновщик и использует расширение «.o». Вероятно, вы имеете в виду файл реализации класса (с расширением «.m»). –

Смежные вопросы