Переопределение в категориях таких методов, которые упоминали @ChoungTran, не такая хорошая идея.Если вы хотите настроить методы по умолчанию в категории, было бы лучше сделать это в swizzled методе .
Но я бы предпочел сделать пользовательский класс производным отUIButton, и реализуйте эту логику там и используйте эту кнопку везде, где мне нужно тактильно.
Хотя Objective-CВ настоящее время язык позволяет вам использовать категорию для переопределения методов, которые наследует класс, или даже методов, объявленных в интерфейсе класса, поэтому вам настоятельно не рекомендуется делать это.Категория не является заменой для подкласса.Есть несколько существенных недостатков в использовании категории для переопределения методов:
Когда категория переопределяет унаследованный метод, метод в категории может, как обычно, вызывать унаследованную реализацию через сообщение super.Однако если категория переопределяет метод, который существует в классе категории, невозможно вызвать исходную реализацию.
Категория не может надежно переопределить методы, объявленные в другой категории того же класса.
Эта проблема имеет особое значение, поскольку многие классы Какао реализованы с использованием категорий.Определенный каркасом метод, который вы пытаетесь переопределить, сам может быть реализован в категории, и поэтому реализация, которая имеет приоритет, не определена.
Само присутствие некоторых методов категории может вызвать изменения поведения во всех каркасах.Например, если вы переопределяете метод windowWillClose: делегат в категории в NSObject, все делегаты окна в вашей программе затем отвечают методом категории;поведение всех ваших экземпляров NSWindow может измениться.Категории, добавляемые вами в каркасный класс, могут вызвать загадочные изменения в поведении и привести к сбоям.