Переопределить метод через Категорию ObjC и назвать реализацию по умолчанию?

Как насчет этого?

people = []

until (info = gets.chomp).empty?
  people += [Person.new(info)]
end
47
задан Kendall Helmstetter Gelner 6 July 2009 в 04:53
поделиться

2 ответа

Если вам нужен хакерский способ сделать это, включающий сбор данных с помощью среды выполнения objective-c, вы всегда можете использовать метод swizzling (вставьте сюда стандартные заявления об отказе от ответственности). Это позволит вы можете хранить различные методы как селекторы с произвольными именами, а затем менять их местами во время выполнения по мере необходимости.

37
ответ дан 26 November 2019 в 19:48
поделиться

Я всегда думал, что комментарии в стиле / * * / необходимы для многострочных комментариев, потому что // было разрешено «в нескольких последовательных строках для комментирования участков кода». Инструменты форматирования кода должны иметь возможность легко отличать многострочные комментарии от закомментированного кода.

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

С учетом всего сказанного, многие правила стиля, по крайней мере, немного произвольны, поэтому, возможно, не было веской причины, по которой в соглашениях о коде для языка программирования Java указано / * Комментарии / style требовались для многострочных комментариев. s определение перезаписывает определение, которое было ранее. Исходное определение больше не может быть достигнуто с помощью кода Objective-C. Обратите внимание, что если две категории перезаписывают один и тот же метод, то "выигрывает" тот, который был загружен последним, что может быть невозможно предсказать до запуска кода. "

From developer.apple.com :" Когда категория переопределяет унаследованный метод, метод в категории может, как обычно, вызывать унаследованную реализацию через сообщение для super. Однако, если категория переопределяет метод, который уже существовал в классе категории, нет возможности вызвать исходную реализацию »

Обратите внимание, что если две категории перезаписывают один и тот же метод, то "выигрывает" тот, который был загружен последним, что может быть невозможно предсказать до запуска кода. "

From developer.apple.com :" Когда категория переопределяет унаследованный метод, метод в категории может, как обычно, вызывать унаследованную реализацию через сообщение для super. Однако, если категория переопределяет метод, который уже существовал в классе категории, нет возможности вызвать исходную реализацию »

Обратите внимание, что если две категории перезаписывают один и тот же метод, то "выигрывает" тот, который был загружен последним, что может быть невозможно предсказать до запуска кода. "

From developer.apple.com :" Когда категория переопределяет унаследованный метод, метод в категории может, как обычно, вызывать унаследованную реализацию через сообщение для super. Однако, если категория переопределяет метод, который уже существовал в классе категории, нет возможности вызвать исходную реализацию »

19
ответ дан 26 November 2019 в 19:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: