que protocolos protocolo programacion orientada multiple herencia ios objective-c inheritance swift protocols

ios - protocolos - que es un protocolo en swift



Swift: type debe implementar el protocolo y ser una subclase de clase dada (1)

En Objective-C, puede definir un tipo como perteneciente a una clase determinada e implementar un protocolo:

- (UIView <Protocol> *)someMethod;

Esto diría que el valor devuelto por someMethod era una UIView implementaba un Protocol protocolo dado. ¿Hay alguna manera de hacer cumplir algo similar en Swift?


Puedes hacerlo así:

protocol SomeProtocol { func someMethodInSomeProtocol() } class SomeType { } class SomeOtherType: SomeType, SomeProtocol { func someMethodInSomeProtocol() { } } class SomeOtherOtherType: SomeType, SomeProtocol { func someMethodInSomeProtocol() { } } func someMethod<T: SomeType where T: SomeProtocol>(condition: Bool) -> T { var someVar : T if (condition) { someVar = SomeOtherType() as T } else { someVar = SomeOtherOtherType() as T } someVar.someMethodInSomeProtocol() return someVar as T }

Esto define una función que devuelve un objeto de tipo ''SomeType'' y el protocolo ''SomeProtocol'' y devuelve un objeto que se adhiere a esas condiciones.