
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
