Как директива компилятора @encode реализована в Objective-C? - PullRequest
6 голосов
/ 11 февраля 2010

Может кто-нибудь объяснить, как работает @encode для извлечения элементов типа данных, присутствующих в данном объекте, структуре или типе данных, в определение типа, которое будет использоваться в качестве дескриптора класса для создания экземпляра?

Или, может быть, указатель на некоторые ресурсы для изучения о реализации новых директив препроцессора?

Ответы [ 2 ]

5 голосов
/ 12 февраля 2010

Директива @encode анализирует предоставленный тип и генерирует постоянную строку на основе этого типа. Кодировка всех примитивных типов C (включая версии со знаком и без знака) и типы Objective-C id и SEL имеют односимвольные кодировки, их можно найти в <objc/runtime.h>. Более сложные типы, такие как struct s и массивы, имеют большие кодировки.

Более подробная информация доступна в Руководстве по программированию Objective-C Runtime [PDF].

1 голос
/ 13 февраля 2010

Возможно, формулировка исходного вопроса была неясной, и я думаю, что мое упоминание о возможной реализации с участием препроцессора заставило разговор повернуться к тонкостям работы компиляторов, а не к намеченному вопросу.

Пожалуйста, дайте ссылку на этот вопрос, который, как мне кажется, намного яснее относительно того, что я пытаюсь выучить: Как мне реализовать нечто подобное директиве компилятора @encode () Objective-C в ANSI C?

...