1.sendEvent調用:html
當手指觸摸ipad屏幕的時候會調用,由於每次進入App都有一個時間計數器。後端
@objc(MyApplication) class MyApplication: UIApplication { override func sendEvent(_ event: UIEvent) { if event.type == .touches { if let touches = event.allTouches { for touch in touches.enumerated() { if touch.element.phase == .began && HHTSwitchGlobalData.shared.canGotoWaiter { NotificationCenter.default.post(Notification(name: NSNotification.Name.WaiterHomeAutoExitRestart)) } } } } super.sendEvent(event) } }
2.數組添加數據:數組
for _ in 0..<10000 { var a = [1, 2, 3, 4, 5] let b = [6, 7, 8, 9, 10] a.appendContentsOf(b) if a != [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] { fatalError("Wrong Order") } }
3.定義結構體:緩存
struct MergeOptions: OptionSet { let rawValue: Int static let ordered = MergeOptions(rawValue: 1<<0) static let ordering = MergeOptions(rawValue: 1<<1) static let sellout = MergeOptions(rawValue: 1<<2) static let emergency = MergeOptions(rawValue: 1<<3) static let redEnvelope = MergeOptions(rawValue: 1<<4) }
OptionSet 是一個協議。app
4.MacOS系統終端查看本機IP:異步
ifconfigide
5.判斷View上是否包含此子視圖:post
if self.view.subviews.contains(self.introductionView) { return }
6.collectionView?.prefetchDataSourcefetch
if #available(iOS 10.0, tvOS 10.0, *) { collectionView?.prefetchDataSource = self } // 實現預加載。 // 翻 API 的時候看到了 iOS 10 新加入的 UITableViewDataSourcePrefetch 協議,主要是 Apple 針對於 CollectionView 大量 Item 快速滑動時掉幀嚴重問題的優化。
7.Kingfisher的ImagePrefetcher(urls: urls).start()使用:優化
將一些圖片在顯示到屏幕上以前,先預取到緩存。主要用於當你能夠預知接下來會用到圖片資源時,避免屢次請求。
https://blog.csdn.net/sps900608/article/details/51671849
8.
//設置緩存 self.layer.shouldRasterize = true 當shouldRasterize設成true時,layer被渲染成一個bitmap,並緩存起來,等下次使用時不會再從新去渲染了。實現圓角自己就是在作顏色混合(blending),若是每次頁面出來時都blending,消耗太大,這時shouldRasterize = yes,下次就只是簡單的從渲染引擎的cache裏讀取那張bitmap,節約系統資源。 若是在滾動tableView時,每次都執行圓角設置,確定會阻塞UI,設置這個將會使滑動更加流暢。 //設置抗鋸齒邊緣 self.layer.rasterizationScale = UIScreen.main.scale //離屏渲染 - 異步繪製 耗電 self.layer.drawsAsynchronously = true
9.rm -rf
我在誤刪時,是使用 rm -rf 命令,這固然是個耳熟能詳的惡名遠揚的命令(以致於我當時請教後端大佬的時候,後端大佬的反應是『哦,你也終於刪一次庫啦』)
10.Github建立分支,提交代碼和合並分支:
11.self.navigationController.viewController.count:
只有調用self.navigationController?.pushViewController纔會改變,present和self.navigationController?.present都不會改變。
12.判斷輸入的字符串是不是數字:
let filterStr = string.filter { "0123456789".contains($0) } let isValid = filterStr.count == string.count
13.presentedViewController 和 presentingViewController 以及 dismissViewControllerAnimated 的區別:
假設從A控制器經過present的方式跳轉到了B控制器,那麼 A.presentedViewController 就是B控制器;B.presentingViewController 就是A控制器。
http://www.javashuo.com/article/p-scgkcxur-ek.html
14.MAC終端經常使用語法:
pwd |
打印當前所在工做目錄 |
cd |
跳轉到指定目錄 ,若是後面沒有追加指定路徑,則跳轉到用戶主目錄 |
ls |
列出當前目錄下的子目錄和文件 |
open |
打開指定文件目錄/文件 |
/ |
根目錄 |
.. |
上級目錄 |
. |
當前目錄 |
~ |
用戶主目錄 |
touch |
若指定文件不存在,新建文件. |
mkdir |
新建目錄 |
rmdir |
刪除目錄,注意只能是空目錄 |
sudo |
臨時以root用戶權限去操做. |