項(xiàng)目實(shí)用
- 存在的循環(huán)引用-容易被忽略的地方
- Cell中粉私, 可以實(shí)用 [weak self]
// 在cell中實(shí)用閉包會(huì)存在循環(huán)引用的情況
cell.callback = {[weak self] type in
if self?.callback != nil {
self?.callback!(type, model)
}
}
- 在SB中跳轉(zhuǎn)頁(yè)面的時(shí)候?qū)嵱瞄]包
if segue.identifier == "selectmic" {
let selectmic = segue.destination as! SelectMicController
selectmic.callback = {[weak self] str in
self?.micName.text = str
}
}
- 使用EmptyDataSet的時(shí)候炫狱,
tableView.emptyDataSetView({[weak self] (view) in
view.titleLabelString(NSAttributedString(string: "沒(méi)有數(shù)據(jù)喲衷蜓!"))
.didTapContentView { // 在此處使用weak self乘碑,還是會(huì)造成循環(huán)引用冠王,self->tableView->emptyView.didTap->self
self?.tableView.mj_header.beginRefreshing()
}
})
- where 從句的用法盏触,主要用于追加判斷
// 1. 在if中, 忽略寫(xiě)法
if let model = UserManager.staned.userModel, model.id == "1" {
// do somthing
}
// 2. 可以在for玩徊、do catch谍失、switch中類似于if中一樣追加判斷
let tmp = (1, 2)
switch tmp {
case (let x, let y) where x > y: // 滿足條件x>y才進(jìn)入case 語(yǔ)句中
// do somthing
default: break
}
// 在class晰筛、protocol嫡丙、類似于在后面追加實(shí)現(xiàn)條件
// RxSwift 一個(gè)UIViewController 的擴(kuò)展,在擴(kuò)展中只有在UIViewController中實(shí)現(xiàn)該方法
extension Reactive where Base: UIViewController {
/// Bindable sink for `title`.
public var title: Binder<String> {
return Binder(self.base) { viewController, title in
viewController.title = title
}
}
}