这里记录一些单个小知识,当备忘录用了,会持续更新,嘻嘻嘻。
持续交付的神器,fastlane真是太方便好用了,一个
gym
选项就满足了我的所有需求,苦笑~~~
Postman好人性化啊,关于multipart/form-data和application/x-www-form-urlencoded的小区别~~~
PHImageManager的
requestImageData
有一个巨坑(我没找到比较好的办法),就是无论如何都会阻塞主线程一会儿,但是只要在当前线程sleep
任意时间,就没事了,相当硬核,或者直接使用requestImage
这个api,速度快,PHImageRequestOptions
设置成同步,效果佳,很香
hexo在远程git仓库,更改密码,无法推送,也不弹出密码,用户名的情况下,可以考虑删除hexo根目录下的
.deploy
文件夹
iOS,实现镂空的效果,可以使用
CALayer
的mask和contents,或者直接使用UIView
的mask,我自己觉得最简单的是使用UIBezierPath
的方法reversing(),这个方法实现镂空,我个人觉得最巧妙了,当然还有其他的方法,都有点麻烦,比如利用drawRect
来渲染绘制出来
swift
5.0之后,关于正则表达式,有一个新的很方便的语法糖#
,举个例子,类似这样:#"\dlufei\d"#
,不需要再使用转移字符了,点赞
在
swift
中,要想使用正则表达式,一般使用NSRegularExpression,还可以使用String
的range(of:)接口,参考Mattt大神的文章
当然,还可以使用模式匹配(pattern-match)来为NSRegularExpression
提供方便的扩展,参考喵神文章
swift
的核心库是包含Foundation框架的,不过这个库是独立于Objective-C runtime
来使用swift重新构建的
Swift中的Range,表示从下限到上限(但不包括上限)的半开间隔,举个例子:
0.0..<5.0
,这就是一个简单的Range,ColsedRange, 表示一个从下限到上限(包括上限)的间隔,举个例子:0...5
,Partial
开头的区间表示单方向的区间
Swift中的语法糖,形如
String[Range]
,可以直接截取字符串,这是在标准库里,Sring
中专门实现了subscript(r:Range<String.Index>) -> subString
iOS9.0以后,SFSafariViewController可以实现和safari的cookies共享,这个其实就给需要实现下载归因记录的需求的人(这个需求,还可以通过ip,网络状况,设备信息来匹配的方法,来判断来源,不管哪种方法都是需要下载并打开应用才行),提供了另一个思路,可以通过cookies来追踪来源,js的唤醒方法一般是用Location方法,app端则加载一个SFSafariViewController,大概是这样,当然这只是一个思路,貌似这个方案有被拒绝的可能,审核指南,可以参考下下
利用假期学一下SwiftUI,按照官方文档写了个demo app,不过快完成的时候发现一个惊人的问题,NavigationLink只能响应一次,我以为我初学,对文档理解错误,一直没怀疑是Xcode11.3.1的bug,查了半天,在这儿找到了能暂时解决这个问题的办法(多层嵌套依然有问题),参考,最好等Xcode自己更新修复解决这个问题了,上面提到的那个硬核解决方案事实上不太适用,哎,本来对SwiftUI充满期待的,另外,不过我觉得SwiftUI的写法很容易一不小心造成多层嵌套的不太美观的代码。终于把我的demo改造成了SwiftUI+Combine+MVVM了,还是有些成就感的~
hexo要是换电脑了咋办,我最近遇到了这个小问题,仔细想了一下,最好的办法就是在远程博客仓库建个分支hexo-migrate,这样是最省事的吧?哈哈,赶紧记下来~
使用AutoLayout布局的时候,在某些场景下需要知道约束下的具体大小(比如动态计算cell等场景),此时可以使用apple提供的接口systemLayoutSizeFittingSize来获取
Swift在处理复杂场景的时候(比如网络请求,要对同一个URLRequest做分门别类的处理),参考官方api的做法和喵神的视频,可以采用下面这样的优雅的方式:
1 | struct AnyAdapter { |
WKWebView中加载本地html的时候,一定要使用相对路径文件夹,也就是在xcode显示为蓝色文件夹,代码示例:
1
2
3 NSURL *url = [[NSBundle mainBundle] URLForResource:@"localFile" withExtension:@"html" subdirectory:@"HtmlDirectory"];
NSURL *mainUrl = [[NSBundle mainBundle] bundleURL];
[self.wkWebView loadFileURL:url allowingReadAccessToURL:mainUrl];无论哪一种load方式,只有相对路径的文件夹,css,js,图片等资源文件才能被正确加载,也才能被正确显示。
参考
iOS上的
quick action
提供了不错的小窗口,官方教程说的也挺细,不过,一旦你是iOS13并且用了SceneDelegate
来管理生命周期的时候,你会发现,那篇教程有些对不上,事实上,在SceneDelegate中有两个新的api来处理这些,并且最好忘了AppDelegate
吧,它不值得。
pod管理第三方的情况下,如果某个第三方支持多种你当前项目不需要的cpu架构,可以通过post_install来移除冗余的部分
查单词的多种意思,可以在韦氏词典查询,试了几个,挺全面的,方便学习
Swift 里面的
String
的index
和count
不是一一对应的(兼容Unicode
),所以stirng.count == 0
的效率不如string.isEmpty
。
推荐iOS优雅引用资源的第三方库 R.Swift ,虽然不是全部,但已经解决了大多数需要硬编码的情况了,体验了一下,真香
原理浅析:源码中引入了两个库 Commander和 XcodeEdit, 第一个是用来在Swift
中快速方便地构造命令行接口,第二个就是用来获取工程项目下的资源信息,最后把拿到的资源信息整合成一个字符串,然后在R.generate.swift
文件中拼装成规律的Swift
结构体。
Swift 的 Array 获取 索引的其中一个办法是 indices
Git 使用过程中,如果有两个账号,并且是使用用户名密码登录的情况下,需要了解一下 更新 OSX 密钥链中的凭据, 在 Git 中缓存 GitHub 密码, 删除 credential.helper=osxkeychain,并且 Mac 上的 git 默认就有这个
credential.helper=osxkeychain
的设置,并且我还没有找到这句话到底写在哪个配置文件下,悲伤~
macOS 下 homebrew 安装的 jenkins-lts 的路径为:
/usr/local/Cellar/jenkins-lts
常用命令:
brew services start jenkins-lts
,brew services restart jenkins-lts
,brew upgrade jenkins-lts
OC 中的枚举,如果看到
<<
说明可以用|
来组合多个枚举值,这种枚举也被称为位移枚举,当然判断每一个枚举值,就要使用&
了
iOS 防截屏的一个取巧的小妙招:
1 | func makeSecView() -> UIView { |
iOS present 一个 VC 的时候,如果需要强制横屏,只需要重写
supportedInterfaceOrientations
就可以了
苹果自带的自适应美化滤镜:
1 | @IBAction func autoAdjust() { |
iOS16 的新特性:Supporting suggestions in your app’s share extension