Каков наилучший способ повторного использования кода в различных классах в Obj-C? - PullRequest
1 голос
/ 19 августа 2009

У меня есть несколько классов (контроллеров), которые разделяют огромный кусок кода друг с другом. Как я могу выделить этот кусок кода? Код - это некоторые методы, которые принадлежат протоколу. Другими словами, все мои контроллеры ведут себя одинаково в отношении этого протокола. Я не могу сделать их подклассами одного и того же родителя, потому что они уже являются подклассами некоторых разных контроллеров.

Ответы [ 4 ]

3 голосов
/ 19 августа 2009

Использовать агрегацию :) Создайте один повторно используемый класс, соответствующий протоколу, и делегируйте ему.

1 голос
/ 19 августа 2009

Добавление категории к общему суперклассу (NSObject, если необходимо).

1 голос
/ 19 августа 2009

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

Рассмотрим различные мнения / респондентов в iPhone SDK.

Класс UIResponder предлагает обработку событий.

Подклассы UIView для добавления функциональности рисования.

UIControl подклассы UIView для добавления различных элементов управления, как поведение.

Затем есть UIButton, UITextField, UISlider и т. Д. ... все они подкласса UIControl для добавления их специфических функций.

Если вы внимательно посмотрите, протоколы NSCoding (и NSObject) объявляются поддерживаемыми различными классами в иерархии, и более конкретные подклассы переопределяются по мере необходимости.

0 голосов
/ 19 августа 2009

Вы можете иметь вид множественного наследования, заставить их «наследовать» от некоторого суперкласса, реализующего протокол ... http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html говорит об этом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...