您的位置:首页 > 移动开发 > Swift

Swift 系统学习 28 类的访问权限

2017-03-01 15:26 260 查看
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()
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息