文件之间引用不用import
数组和字典
let array : Array= ["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, 不执行后面的{}代码
2> name不为nil, 系统会先对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)//调用系统
}
}