Swift 项目基本写法收集
2017-05-13 本文已影响12396人
十一岁的加重
泛型用法
func ==<T: CKKBaseModel>(obj1: T, obj2: T) -> Bool {
return obj1.ssid == obj2.ssid
}
GCD相关
DispatchQueue.global().async {
DispatchQueue.main.async {
self.label?.text = "finished"
}
}
let delay = DispatchTime.now() + .seconds(60)
DispatchQueue.main.after(when: delay) {
// Do something
}
懒加载 lazyloading
let XCCacheDirectory: URL = {
let urls = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)
return urls[urls.endIndex - 1]
}()
get set 方法
extension UIView {
var width: CGFloat {
get { return self.frame.size.width }
set {
var frame = self.frame
// newValue 就是这个set方法想要进行设置的值
frame.size.width = newValue
self.frame = frame
}
}
}
私有方法,私有属性,变量之类的得用fileprivate修饰
GCD 异步操作耗时,主线程执行操作
DispatchQueue.global(qos: .default).async {
// do something
DispatchQueue.main.asyncAfter(deadline: delayTime) {
// do something
}
}
全局宏,不依赖类,可单独搞个文件(如:AppMacro.swift)来存放
//delegate 代理
let TSAppDelegate = UIApplication.shared.delegate as! AppDelegate
// 沙盒文档路径
let kSandDocumentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last!