Каковы различия между наследованием, делегированием, категорией и шаблоном наблюдателя в Objective-C?

Я новичок в Objective-C и так же в iOS. Я занимаюсь разработкой приложений для Android - и поэтому довольно удобно использовать Inheritance. Но в iOS почти все реализовано с использованием Делегирования. Так что в основном мой вопрос:

  • В чем разница между этими четырьмя концепциями и когда их использовать? Каковы плюсы и минусы использования каждого?

Я искал этот вопрос в Stackru, но нигде не смог найти эти концепции вместе.

1 ответ

Решение

Наследование

Способ наследования свойства базового класса для подкласса. Все открытые и защищенные члены наследуются подклассу. *Obj-C не имеет закрытых членов, так что это не входит в игру (однако вы создаете их с помощью расширений классов, даже если есть некоторый взлом для доступа к нему).

Делегация:

Способ, которым вы делегируете задачу одного класса другому. Часто используемые класс и делегаты имеют UITableViewDelegate, Это всегда 1 к 1. Обратный вызов и возвращаемое значение могут быть использованы.

Категория:

Способ, которым вы добавляете новые методы в существующий класс. Когда вы делаете это, подкласс также может использовать категоризированные методы. Вы никогда не добавляете недвижимость, используя категорию. * Однако вы можете добавить с помощью связанных объектов.

Шаблон наблюдателя:

Класс действует как вещатель и передает сообщение. Неважно, кто является его наблюдателем или получателем. И все наблюдатели получают уведомление, отправленное наблюдателем, и начинают выполнять это сообщение. Это может быть 1-к-0, 1-к-1 или 1-ко-многим. Даже несколько вещателей могут отправлять одни и те же уведомления, поэтому вы можете сказать -to-. Здесь обратный вызов или возвращаемое значение не отправляются.

Другие вопросы по тегам