2016-08-26 2 views
0

У меня есть этот делегат, который соответствует SomeProtocolСделать переменную Делегат как подкласс и соответствовать протоколу

weak var delegate:SomeProtocol? 

Теперь я хочу этот делегат быть подклассом SomeClass.

Как я могу это сделать в одном объявлении?

Должен ли я определить новый подкласс, который наследуется от SomeClass и соответствует SomeProtocol?

+2

Обратите внимание, что есть несколько подобных вопросов, например http://stackoverflow.com/questions/29881621/make-property-of-type-and-also-conform-to-protocol-in-swift –

+0

Мы должны отметьте это как дублирующее или удалите его тогда – etayluz

ответ

0

В Swift вы можете наследовать свой класс из другого класса и соответствовать нескольким протоколам.

Вот синтаксис

protocol CanRun { } 
class Animal { } 

class Cat: Animal, CanRun { } 
+0

Есть ли способ в одной строке объявить переменную одного типа класса и наследует от одного протокола? – etayluz

+1

Нет, в Swift нет такой вещи –

0

переменные может иметь только один тип класса или соответствовать множеству протоколов, в вашем случае вы можете создать другой протокол, который SomeClass соответствовать, скажем SecondProtocol и указать, что delegate соответствуют как SomeProtocol и SecondProtocol:

weak var delegate: protocol<SomeProtocol, SecondProtocol> 

или сделайте то, что вы сказали о новом подклассе.

+0

Есть ли способ в одной строке объявить переменную одного типа класса и наследовать от одного протокола? – etayluz

+1

Нет, нельзя делать такие вещи, как * var delegate: SomeClass, protocol *, если это то, что вы хотите. – xhamr

Смежные вопросы