盒子
盒子

How to make iOS Apps with Swift.

先构架框架

  1. 主页面,跳转。
  2. 模块划分,加载。

TableController 问题。

  1. View需要构造器吗? Syswift

在做OC项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加载一次,保证项目的效率

那么何为惰性初始化呢?
从OC的代码中不难看出,惰性初始化,就是在变量第一次使用的时候才进行初始化。
那么Swift也有懒加载这么一说,而且Apple 很推荐我们使用懒加载, 并且还有一个关键字lazy

懒加载定义: var 变量名: 类型 = 闭包()
看一下下面的实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private lazy var backBtn: UIButton          = UIButton()
private lazy var likeBtn: UIButton = UIButton()
private lazy var sharedBtn: UIButton = UIButton()
private lazy var submitTitle: UILabel = UILabel()
private lazy var line:UIView = UIView()
private lazy var isLoadFinsih = false
private lazy var isAddBottomView = false
private lazy var showBlackImage = false
private lazy var detailVebView: UIWebView = UIWebView(frame: CGRectMake(0,0,AppWidth,AppHeight))
private lazy var tableFooterView = UIView()
private lazy var loadFinishScrollHeihgt: CGFloat = 0
private lazy var customNav: UIView = {
let customNav = UIView(frame: CGRectMake(0, 0, AppWidth, NavigationH))
customNav.backgroundColor = UIColor.whiteColor()
customNav.alpha = 0.0
return customNav
}()

Swift中的惰性初始化

Swift中,有两种方式来惰性初始化。
第一种,简单表达式

1
lazy var first = NSArray(objects: "1","2")

第二种,闭包

1
lazy var second:String = { return "second" }()

注意:不要忘记最后的小括号,只有加了小括号,必包才会在掉用的时候立刻执行。

惰性初始化的使用场景

属性本身依赖于外部因素才能初始化
属性需要复杂计算,消耗大量CPU
属性不确定是否会使用到
定制化的初始化
有些初始化只需要初始化一次,在变量定义的地方初始化,有助于代码维护

支持一下
扫一扫,支持juengs
  • 微信扫一扫
  • 支付宝扫一扫