Прямой вызов функции C всегда будет быстрее, чем вызов метода Obj-C; но, как отмечают многие, за исключением кода, чувствительного к производительности, это вряд ли является узким местом.
Однако вы можете изменить это и спросить, зачем использовать метод, если он медленнее? - Указ против «преждевременной оптимизации» не означает «специально писать плохой код».
Это баланс, и грань между тем, использовать ли метод или функцию, нечеткая, вы должны сделать выбор. Две конечные точки, которые могут помочь:
- Если код будет изменять состояние объекта - используйте метод.
- Если код является естественной функцией; принимает некоторые входные данные, создает выходные данные, не манипулирует состоянием (имеет «побочные эффекты»); тогда функция имеет смысл.
Для всех промежуточных точек используйте свое собственное суждение.
Например, если у вас есть код в классе, который должен вычислить объем пирамиды в нескольких местах, вы абстрагируете алгоритм объема: метод или функция? Функция - принимает некоторые значения, выдает значение, не изменяет состояние объекта. Может быть, еще лучше сделать функцию static
, которая эффективно делает ее приватной для класса и не загрязняет пространство имен ваших приложений. Написание такого алгоритма как метода, если он нужен только для внутреннего использования классом, бесполезно - я бы сказал, что это был «плохой код» (но это мнение !)