Подтвердить что ты не робот

Когда использовать категории и когда использовать подклассы?

Может ли кто-нибудь сказать мне, когда использовать категории и когда использовать подклассы в Objective-C? Также, пожалуйста, расскажите мне о преимуществах и недостатках.

4b9b3361

Ответ 1

Категория objective-c полезна, если вы хотите изменить поведение ВСЕХ экземпляров класса с минимальным кодом. Подкласс более полезен, если вы хотите изменить поведение только определенных экземпляров и сохранить исходный метод для других.

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

Ответ 2

Категория: Используется, если мы хотим добавить какой-либо метод в данный класс, источник которого неизвестен. Это в основном используется, когда мы хотим изменить поведение любого класса.

Например: если мы хотим добавить метод в NSString для изменения строки, мы можем перейти к категориям.

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

Например: Мы подклассифицируем UIView для изменения его состояния и поведения в нашем iOS-коде.

Ответ 3

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

Ответ 4

  • Вы хотите изменить что-то, что происходит в рамках структуры вызовы в течение жизненного цикла объекта пользовательского интерфейса? Используйте подкласс. Override соответствующие методы, такие как init, drawrect, layoutsubviews и т.д.

  • Вы хотите, чтобы какое-то приложение было широко распространено, что находится в дополнение к существующей функциональности, и вам все равно, если это становится доступным для всех экземпляров этих ранее существовавших экземпляров класса framework? Используйте категории. Пример: анимация UILabel при определенных действиях пользователя и применение этой анимации через ваше приложение ко всем экземплярам UILabel.