访问控制,内存管理
2020-06-29 本文已影响0人
奇怪的知识增加了
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 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扩展
image.png image.png将方法赋值给var\let sss
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