Я хотел бы сделать это:Могу ли я форсировать протокол в Swift?
UIView <UITextFieldDelegate>*
в стрижа.
Создание объекта, который подклассы UIView также соответствуют протоколу UITextFieldDelegate
.
Я хотел бы сделать это:Могу ли я форсировать протокол в Swift?
UIView <UITextFieldDelegate>*
в стрижа.
Создание объекта, который подклассы UIView также соответствуют протоколу UITextFieldDelegate
.
Вы можете выразить (id <UITextFieldDelegate, UIScrollViewDelegate>)
с помощью Protocol Composition
но не .(UIView<UITextFieldDelegate> *)
. кроме определения класса
// Obj-C
- (void)methodName:(id <UITextFieldDelegate, UIScrollViewDelegate>)arg { ... }
// Swift
func methodName(arg:protocol<UITextFieldDelegate, UIScrollViewDelegate>!) { ... }
На самом деле, метод Obj-C объявлен - (void)methodName((UIView<UITextFieldDelegate> *))arg;
, когда это мостиком Swift, вы можете позвонить в любой UIView
инстанции.
EDIT:
После небольшого исследования, кажется, вы можете объявить func
как это
func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... }
Сделать суб класс UIView
и пусть SubClassedView соответствует UITextFieldDelegate
традиционным способом
@interface SubClassedView:UIView <UITextFieldDelegate>
@end
в быстрой
class SubClassedView:UIView, UITextFieldDelegate {
}