Я хочу иметь тип UIView, который соответствует моему пользовательскому протоколу. Я пытаюсь сделать это так, но Xcode говорит, что это неправильное объявление:
typealias ViewThatConformsToProtocol = UIView: MyCustomProtocol
и это тоже не работает:
typealias ViewThatConformsToProtocol = UIView, MyCustomProtocol
Но я не хочу использовать для этого подклассы. Есть ли способ сделать это?
P.S. С подклассами мне бы хотелось так:
class ViewThatConformsToProtocol: UIView, MyCustomProtocol {
}
Но я не хочу использовать подклассы, потому что это противоречит моему шаблону проектирования (например, потому что, когда мне просто нужно знать, что мое представление поддерживает поведение этого протокола, я не хочу, чтобы это представление было подклассом ViewThatConformsToProtocol . И иногда View1 может подтверждают протокол 1 и протокол 2, но View2 может соответствовать протоколам 1 и 3 — это просто для примера). В Objective-C вы можете легко объявить UIView *viewForProtocol = (UIView<MyCustomProtocol> *)view1
, но в SWIFT это кажется невозможным, поэтому я ищу обходной путь
UIView
или подклассUIview
и он соответствуетMyCustomProtocol
? - person Sweeper   schedule 20.04.2017UIView
. Этот класс либо соответствуетMyCustomProtocol
, либо нет. Это можно определить во время компиляции. - person Sweeper   schedule 20.04.2017