Я пытаюсь сэкономить время / сделать мой код читабельным.У меня много сообщений «isXXX», которые возвращают BOOL.Я постоянно добавляю больше сообщений «есть».Можно ли сделать макрос, который можно расширять во время предварительной компиляции через список.
Я хочу указать: isMacro (1, 2, 3).
И для каждого из них,Я хочу, чтобы макрос расширил его до полного - (BOOL) is1 {...}, - (BOOL) is2 ...
Кажется, что это было бы хорошим использованием расширения макроса прекомпилятора,но я не уверен, как реализовать часть isMacro (...).(В частности, ..., который расширяется до полных функций перед компиляцией).
--- Обновление:
Все методы "is" вычисляются динамически, но все они являются общими.
Я проверяю одну переменную по отношению к значению enum и определяю, равно ли оно.Я не могу @ синтезировать их, потому что это динамично.У меня есть все из них в @property для удобства.Я просто хочу что-то вроде @synthesize, где я могу перечислить их все и создать динамический ответ для каждого метода isXXX.
Кроме того, я не хочу запускать режим isCheck: (opMode), так какнет никакой предварительной проверки компиляции, чтобы убедиться, что это допустимое значение перечисления.
Все функции is имеют следующий формат:
-(BOOL) isTurtle { return operationMode == Turtle; }
Ключ в том, что я хочу, чтобы он функционировал каксвойство для простоты.Поэтому я не хочу что-то вроде режима: (opMode), где я должен указать BOOL res = [obj is:Tutle];