![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
swift小记
文章平均质量分 67
云松sys
这个作者很懒,什么都没留下…
展开
-
Swift下的Lazy懒加载模式
lazy模式: 延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间。如果我们可以把这个属性的初始化时刻推迟,与包含它的对象的初始化时刻分开,以达到提升性能的目的。举例oc模式下 @property (nonatomic, strong)NSMutableArray *lazyArr;- (NSMutableArray *)lazyArr{原创 2016-05-05 10:38:13 · 1609 阅读 · 1 评论 -
Swift的unowned字段
unowned 简单的说就是防止循环引用,类似OC中的unsafe_unretained字段。最常用的情况是在懒加载模式使用闭包的时候防止循环引用,如果当前的实例直接或者间接地对这个闭包又有引用的话,就形成了一个 self -> 闭包 -> self 的循环引用。 举例 class Person { let name: String lazy var pri转载 2016-05-05 11:05:06 · 436 阅读 · 0 评论 -
swift的willSet、didSet、get、set函数
willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化,一个监听改变之前 一个监听改变之后的属性 get就是Oc中的get函数 set就是OC中的set函数 简单举例 class Person : NSObject{ var variable1 : Int = 0 { willSet { print(原创 2016-05-05 13:53:21 · 1008 阅读 · 0 评论 -
swift中的convenience
在 Objective-C 中,init 方法是非常不安全的:没有人能保证 init 只被调用一次,也没有人保证在初始化方法调用以后实例的各个变量都完成初始化,甚至如果在初始化里使用属性进行设置的话,还可能会造成各种问题,虽然 Apple 也明确说明了不应该在 init 中使用属性来访问,但是这并不是编译器强制的,因此还是会有很多开发者犯这样的错误。 所以 Swift 有了超级严格的初始原创 2016-05-05 14:39:30 · 1172 阅读 · 0 评论 -
swift之mutating
mutating 主要用于定义协议接口增加的关键字段 Swift 的 protocol 不仅可以被 class 类型实现,也适用于 struct 和 enum。因为这个原因,我们在写给别人用的接口时需要多考虑是否使用 mutating 来修饰方法,比如定义为 mutating func myMethod()。Swift 的 mutating 关键字修饰方法是为了能在该方法中修改 stru转载 2016-05-05 17:39:22 · 629 阅读 · 0 评论 -
swift之给拓展Category增加属性
使用 Category 扩展现有的类的功能的时候,直接添加实例变量这种行为是不被允许的,这时候一般就使用 property 配合 Associated Object 的方式,将一个对象 “关联” 到已有的要扩展的对象上。进行关联后,在对这个目标对象访问的时候,从外界看来,就似乎是直接在通过属性访问对象的实例变量一样,可以非常方便。 // MyClass.swift class MyClas转载 2016-05-06 09:16:18 · 1202 阅读 · 0 评论