image.png
image.png
image.png
image.png
image.png
布爾類型成立就往下走,不成立就報錯打印后面的提示
image.png
image.png
訪問控制
image.png
image.png
image.png
image.png
image.png
image.png
放在test類里面會報錯,因為fileprivate獲取的是整個文件的作用域,在test外面找不到Person就報錯;放在test外面的話,private作用域和fileprivate一樣都是在本文件內部,所以不會報錯
image.png
直接在全局作用域下的private 等同于fileprivate,一般情況下,類型為private或者fileprivate,則成員\嵌套類型默認也是private或者fileprivate
image.png
image.png
如果結構體有private\fileprivate的存儲實例屬性,那么它的成員初始化器也是private\fileprivate
image.png
協議
image.png
image.png
image.png
image.png
Person里面協議的實現方法run()要么大于等于Person的級別,要么大于Runnable協議的級別
Person里面run()默認是internal級別
擴展
image.png
Person里面run()默認也是fileprivate-----如果有顯式設置擴展的訪問級別,擴展添加的成員自動接收擴展的訪問級別
如果沒有顯示設置擴展的訪問級別,擴展添加的成員的默認訪問級別,跟直接在類型中定義的成員一樣
如果沒有顯示設置擴展的訪問級別,擴展添加的成員的默認訪問級別,跟直接在類型中定義的成員一樣
可以單獨給擴展添加的成員設置訪問級別
可以單獨給擴展添加的成員設置訪問級別
不能給用于遵守協議的擴展顯式設置擴展的訪問級別
image.png
將方法賦值給var\let sss
image.png
image.png
image.png
內存管理
image.png
let 無法保證p可以賦值為nil
ARC自動給弱引用設置nil時,不會觸發屬性觀察器
image.png
image.png
image.png
image.png
image.png
非逃逸閉包
image.png
image.png
image.png