import UIKit
/**
本節主要內容
1.類的訪問權限
*/
//controller裏面
let app = App(name: "Clarence")
app.show()
app.switchMode()
app.show()
app.switchMode()
app.show()
//UI.swift
import Foundation
import UIKit
// internal
enum Theme {
case DayMode
case NightMode
}
// public: 模塊外可見(Contents.swift可見)
// internal是默認的權限設置, 可以省略
// internal
class UI {
// 聲明私有屬性(App類不可見)
// fontColor一定有值
private var fontColor: UIColor!
private var backgroundColor: UIColor!
var themeMode: Theme = .DayMode {
didSet {
// 賦值成功, 調用私有方法, 切換主題
self.changeTheme(themeMode: themeMode)
}
}
// 對App可見
init() {
self.themeMode = .DayMode
self.changeTheme(themeMode: self.themeMode)
}
// App類不可見
private func changeTheme(themeMode: Theme) {
switch themeMode {
case .DayMode:
fontColor = UIColor.black
backgroundColor = UIColor.white
case .NightMode:
fontColor = UIColor.white
backgroundColor = UIColor.black
}
}
// public/internal
func show() {
print("The font color is \(fontColor == UIColor.white ? "White" : "Black")")
print("The background color is \(backgroundColor == UIColor.white ? "White" : "Black")")
}
}
//app.swift
import Foundation
// 很多個類型: 類/結構體/枚舉
public class App {
// 聲明私有屬性
private let ui = UI()
public var name: String
// 構造方法
public init(name: String) {
self.name = name
}
// 切換模式方法(Content.swift文件可見)
public func switchMode() {
switch ui.themeMode {
case .DayMode :
ui.themeMode = .NightMode
case .NightMode:
ui.themeMode = .DayMode
}
}
// show方法
public func show() {
print("The app name is \(name)")
ui.show()
}
}
Swift 系統學習 28 類的訪問權限
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.