2016-08-08 9 views
1

Я использую стороннюю структуру, которая предоставляет класс, чьи экземпляры имеют только свойства. В моем приложении я хотел бы добавить дополнительное свойство к этим экземплярам. Каким образом это можно сделать для этого сценария?Расширение класса против подкласса в Swift?

а) Расширение класса фреймворки в моем приложении

б) Создание подкласса класса фреймворки и определить новое свойство мне нужно

Заранее спасибо

ответ

8

Это

b)

поскольку добавление (сохранение) свойств в расширение класса не поддерживается.

Есть два важных правила использования расширений:

  • Расширения могут добавлять новые функциональные возможности типа, но они не могут переопределить существующие функциональные возможности

  • Расширения могут добавлять новые вычисляемые свойства, но они не могут добавлять сохраненные свойства или добавлять наблюдателей свойств к существующим свойствам

2

Это зависит от того, какое поведение вы ожидаете достичь.

Расширение: Вы можете только добавить новые методы и вычислен VARS, но вы добьетесь бесшовного усилия в вашем коде. новая функциональность доступна в любом месте без добавления новых классов в коде

подклассы: Вы могут добавить нового ВАР и функции коррекции но есть больше след в вашем коде. Вам нужно будет использовать этот конкретный подкласс во всем проекте.

Я думаю, что это скорее вопрос дизайна.

Мое предложение: если весь проект нуждается в этой новой его поведению расширения, в противном случае подкласс.

+0

Спасибо за ваш ответ – AppsDev

+1

Я думаю, что последний пункт часто упускается из виду. Расширения являются глобальными, поэтому они влияют на части кода, которые могут не требовать сложности. По этой причине я думаю, что в этой ситуации их следует избегать. – LegendLength