====== iOS Developer Interview ======
===== Question 1 =====
* Consider the following code. What's the value of the **len** variable, and why?
* 参考以下的代码,len的值为何?请解释。
var array1 = [1, 2, 3, 4, 5]
var array2 = array1
array2.append(6)
var len = array1.count
===== Question 2 =====
* Consider the following code. Where is the error and why? How can it be fixed?
* 参考以下的代码,那里出错了?请解释。如何修复?
let op1: Int = 1
let op2: UInt = 2
let op3: Double = 3.34
var result = op1 + op2 + op3
===== Question 3 =====
* Consider the following code. What is the bug and how does it affect memory? How can it be fixed?
* 参考以下的代码,那里出错了以及如何影响内存?如何修复?
class Master {
lazy var detail: Detail = Detail(master: self)
init() {
println("Master init")
}
deinit {
println("Master deinit")
}
}
class Detail {
var master: Master
init(master: Master) {
println("Detail init")
self.master = master
}
deinit {
println("Detail deinit")
}
}
func createMaster() {
var master: Master = Master()
var detail = master.detail
}
createMaster()
===== Question 4 =====
* Consider the following **UITableViewCell** constructor. What is the purpose of the **reuseIdentifier**? What is the advantage of setting it to a non-nil value?
* 参考以下**UITableViewCell**构造数,**reuseIdentifier**的作用是什麽?把它设定为non-nil值有什麽好处?
init(style: UITableViewCellStyle, reuseIdentifier: String?)
===== Question 5 =====
* Write down the log results at 3 different cases
* Start **MainViewController**
* Push to **ViewControllerTwo** from **MainViewController**
* User press back button from **ViewControllerTwo**
* 我们有以下兩段代码,请分别写下以下三种执行后log的结果
* 开始 **MainViewController**
* 從 **MainViewController** 推向 **ViewControllerTwo**
* 用户在 **ViewControllerTwo** 按back button
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("MainViewController :", "viewDidLoad")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("MainViewController :", "viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("MainViewController :", "viewDidLayoutSubviews")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("MainViewController :", "viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("MainViewController :", "viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("MainViewController :", "viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("MainViewController :", "viewDidDisappear")
}
deinit {
print("MainViewController :", "deinit")
}
}
class ViewControllerTwo: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("ViewControllerTwo :", "viewDidLoad")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("ViewControllerTwo :", "viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("ViewControllerTwo :", "viewDidLayoutSubviews")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("ViewControllerTwo :", "viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("ViewControllerTwo :", "viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("ViewControllerTwo :", "viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("ViewControllerTwo :", "viewDidDisappear")
}
deinit {
print("ViewControllerTwo :", "deinit")
}
}