【发布时间】:2015-11-04 15:04:38
【问题描述】:
让我们从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 Oriented
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,userToken:String,secret : String) {
self.token = userToken
self.secret = secret
self.id = userID
}
}
我只需要知道哪个更 Swift 吗?
【问题讨论】:
-
协议主要用于委托。在我看来,这里的子类化是更好的选择。
-
@milo526 协议远不止用于委托。这是一种非常“客观-c”的看待事物的方式。我鼓励您观看developer.apple.com/videos/play/wwdc2015-408 或阅读raywenderlich.com/109156/…