Julian Home

Life You Life

private fileprivate internal public open

sorted by: DESC private : 只能在本类的作用域且在当前文件内能访问, extension 中只是扩展,也是本类中,只要在一个 .swift 文件内 fileprivate : 能在当前文件内访问到,不管是否在本类的作用域,只要在当前 .swift 文件类都可以访问 如果子类跟父类不再同一个文件下是不能够使用fileprivate修饰的方法或属性的; 且p...

iOS 属性引用self->,self.xx与_xx的区别

@property 会生成ivar+setter+getter 方法, 自动实现 synthesize 实例变量 self.ivar - 通过@property 定义属性, 有retaincount ` _ivar ` - 成员变量 ,不自动实现setter ,getter,这个在 .m 中可以用self->ivar 或 _ivar 来赋值及引用,在写框架中需要定义pr...

autoreleasepool

在oc 中 @ autoreleasepool 1 2 @ autoreleasepool { } 在swift中 autoreleasepool 使用 1 2 3 4 5 autoreleasepool(invoking: { for i in 0 ... 1 { print(i) } })

where

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 struct Wrapper<T> { let value: T func base(){ print(value) } } Wrapper(...

枚举综合一致性

1 2 3 4 5 6 7 8 9 10 11 12 13 14 enum Priority: Int, Comparable { case low case medium case high static func < (lhs: Self, rhs: Self) -> Bool { return lhs.rawValu...

symbolicatecrash

iOS crash符号化

new in swift 5.2

proposals [SE-0249 Key Path Expressions as Functions ](https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md) 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

@frozen 和@unknown default

frozen意为冻结,是为Swift5的ABI稳定准备的一个字段,意味向编译器保证之后不会做出改变。为什么需要这么做以及这么做有什么好处,他们和ABI稳定是息息相关的. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @frozen public enum ComparisonResult : Int { case orderedAscending = -1...

propertyWrapper

属性包装类

通过包装类可以大大减少的code 量 首先通过UserDefaults 来看下 enums 创建keys 1 2 3 4 5 extension UserDefaults { enum Keys { static let isFirstLaunch = "isFirstLaunch" } } 建立包装类 1 2 3 4 5 6 7...

swift 优化等级选项

Swift 还增加了一个优化等级选项 “Optimize for Size”,名如其意就是优化尺寸,编译器通过减少泛型特例化,减少函数内联等等手段,让最终编译出来的二进制文件变得更小 现实中性能可能并非人们最关心的,而应用的大小会更加重要,使用了这个编译选项实测可以让二进制文件减小 10-30%,而性能通常会多消耗 5%。