HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Subclassing v.s.协议大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们从Class方法开始:

class LoginCredentials {

    var id : String

    init(userID:string) {
        self.id = userID
    }
}

那么我们将有以下内容

class FacebookLoginCredentials : LoginCredentials {

var token : String
init(userID:string,userToken:string) {

    self.token = userToken    
    super.init(userID: userID)
}}

class TwitterLoginCredentials  : LoginCredentials {
var token : String
var secret : String
init(userID:string,userToken:string,secret : String) {

    self.token = userToken
    self.secret = secret
    super.init(userID: userID)
}
}

如果我没有错,第二种方法是面向协议

protocol LoginCredentials {

    var id : String { get }
}

然后我们将:

struct FacebookLoginCredentials : LoginCredentials {

var id: String
var token : String
init(userID:string,userToken:string) {

    self.id = userID
    self.token = userToken
}
}

struct TwitterLoginProfile : LoginCredentials {
var id: String
var token : String
var secret : String

init(userID:string,secret : String) {

    self.token = userToken
    self.secret = secret
    self.id = userID
}
}

我只需要知道哪一个更像Swift?

解决方法

最终,这些方法都不是“更加迅捷”.在Swift中,有时您会想要使用继承,有时您会想要使用协议.这两种方法的真正决定点是:

您是否需要值类型语义(结构和协议)或者您是否需要引用类型语义(类和协议).我通常认使用值类型语义,因为它们更安全但是肯定存在引用类型语义很重要的情况.你可以在这里阅读更多相关信息:Why Choose Struct over Class.

大佬总结

以上是大佬教程为你收集整理的ios – Subclassing v.s.协议全部内容,希望文章能够帮你解决ios – Subclassing v.s.协议所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。