文件之間引用不用import
數組和字典
let array : Array<Any>= ["why", 18, 1.88]---泛型
var arr : [Any] = ["11","222",222222]
如果數組中是同一類型
var arr ?= ["11","222",222222]----類型推導
arr.append(3333)
var dic :[String : Any] = ["dddd":123,"jjj":"ffff"]
dic["hao1"] = "上海"
類型推導
可選類型(可強制解包! ?不推薦使用 ? 只有可選類型可以=nil)
類型綁定(解決可選類型)
可選綁定
1> 判斷name是否為nil, 如果為nil, 不執(zhí)行后面的{}代碼
?2> name不為nil, 系統(tǒng)會先對name進行!, 并且將解包后的結果, 賦值給tempName
if let tempName = name {print(name)}
if 和 guard
語法糖
var haode : String? = nil
haode = "jack"
if let haode = haode{
print(haode)
print(haode)
}
private : 私有-----d當前作用域私有
fileprivate : 文件私有---當前文件私有
internel : 默認
public :
open :
**********
class ViewController: UIViewController ,UITableViewDataSource,UITableViewDelegate{
// MARK: 屬性
// 懶加載兩個特性: 1> 用到時再加載 2> 多次使用只會加載一次
// fileprivate lazy var tableView : UITableView = UITableView()
// self不能省略的地方: 在閉包中使用到self, self不能省略
//懶加載-fileprivate lazy var name = {}()寫法
fileprivate lazy var tableView : UITableView = UITableView()不需要初始化屬性寫法
fileprivate lazy var tableView : UITableView = {
let tableView = UITableView()
tableView.frame = self.view.bounds
tableView.dataSource = self
tableView.delegate = self
return tableView
}()
extension UIColor{
//? 計算屬性: 只讀屬性--類屬性--只讀都處理好
class var randomColor : UIColor {
return UIColor(r: CGFloat(arc4random_uniform(256)), g : CGFloat(arc4random_uniform(256)), b : CGFloat(arc4random_uniform(256)))
}
在extension中擴充構造函數, 只能擴充便利構造函數
1> 在init前需要加上關鍵字convenience
2> 在自定義的構造函數內部, 必須明確的通過self.init()調用其他的構造函數
convenience init(r : CGFloat, g : CGFloat, b : CGFloat, alpha : CGFloat = 1.0) {
self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)//調用系統(tǒng)
}
}