七月第二周总结

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用户权限去操作.

原文地址:https://www.cnblogs.com/pengsi/p/9305696.html