Disclaimer: This is a workaround, not an ideal solution.
Using typealiasin protocolinstead Selfworks:
protocol DataConvertible {
typealias Result
class func convertFromData(data:NSData) -> Result?
func data() -> NSData
}
Then return UIImage?instead of Self?from the implementation convertFromData:
extension UIImage : DataConvertible {
class func convertFromData(data:NSData) -> UIImage? {
let image : UIImage? = UIImage(data: data)
return image
}
func data() -> NSData {
return UIImagePNGRepresentation(self)
}
}
:. , UIImage.convertFromData(data) UIImage? , ( @hpique ).
:
class Cache<T: DataConvertible where T.Result == T> { }
, UIImage.convertFromData, Int?:
class func convertFromData(data:NSData) -> Int? {
return 1
}
, . , Cache<UIImage>, , Int (T.Result) UIImage (T).