七月第二周总结
1.sendEvent调用:
当手指触摸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 是一个协议。
4.MacOS系统终端查看本机IP:
ifconfig
5.判断View上是否包含此子视图:
if self.view.subviews.contains(self.introductionView) { return }
6.collectionView?.prefetchDataSource
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控制器。
https://www.cnblogs.com/acBool/p/5994663.html
14.MAC终端常用语法:
pwd |
打印当前所在工作目录 |
cd |
跳转到指定目录 ,如果后面没有追加指定路径,则跳转到用户主目录 |
ls |
列出当前目录下的子目录和文件 |
open |
打开指定文件目录/文件 |
/ |
根目录 |
.. |
上级目录 |
. |
当前目录 |
~ |
用户主目录 |
touch |
若指定文件不存在,新建文件. |
mkdir |
新建目录 |
rmdir |
删除目录,注意只能是空目录 |
sudo |
临时以root用户权限去操作. |