本文同步发表在小专栏 WWDC20 内参
WWDC 2020 Session 10173: Get the most out of Sign in with Apple
iOS 13 present 页面的默认 style 变化
在 iOS 开发中,当我们要打开一个 UIViewController 时,通常有 push 或 present 两种方式;push 默认动画是从右向左滑进页面,可通过手势滑动返回,而 present 则是从下向上弹出,全屏覆盖,且无法通过手势关闭,一般是通过左上角导航栏按钮退出页面,如图 1 所示。
通过信号量实现异步调用转同步
在 iOS 开发中,我们通常会通过 delegate 或者 block 的方式来实现异步回调。如图 1 所示,在异步方法 doSomethingWithCallback:
中执行一些耗时操作,然后通过执行 callback
block 将结果返回给调用者,并执行后续的逻辑。
App 内禁止系统自动锁定,保持屏幕常亮
在 iOS 系统中,通常为了节省电池电量,我们会将设置 -> 显示与亮度 -> 自动锁定开启,如图 1 所示,当在短时间内用户没有触摸屏幕时,系统会先将屏幕变暗,然后自动锁定,使设备处于“休眠”状态。
performSelector: 传递多个参数
在 Objective-C 中,方法的调用方式通常由中括号括起来:
1 | [obj methodWithArg1:xxx arg2:xxx] |
但有些场景下,我们需要用 performSelector
的方式调用一个对象的方法,例如:
1 | [obj performSelector:@selector(methodWithArg1:arg2:) withObject:xxx withObject:xxx] |
不过,performSelector:
方法最多只能传递 2 个参数,对于 2 个以上的参数,就没法用它来调用了。
Xcode 模拟器开启全屏模式的两种方式
之前 Xcode 的模拟器不支持全屏模式,导致如果我们在 Xcode 全屏模式下编辑调试代码时,经常需要两个窗口来回切换。
Xcode 10 启用“代码折叠”功能
一般常用的代码编辑器,像 VS Code 或者 Sublime Text 等会带有代码折叠功能,通常只需在代码块的左侧点击相应的折叠图标即可,对于浏览代码非常方便。
使用 Xcode 检测代码覆盖率
“代码覆盖率”是软件测试中的一种度量,用于描述工程中源代码被测试到的比例和程度。
在做单元测试时,代码覆盖率经常被拿来作为衡量测试质量好坏的指标,同时也能在一定程度上检测出工程中的冗余代码。
iOS 判断设备是否静音
在 iOS 设备中,主要有以下两种类型的声音:
铃声和提醒:包括电话、短信、通知等系统类的声音(也包括按键音、锁定声,这两者可在设置中设置是否开启),它们受物理静音开关键的控制,也就是说,当设备开启静音时,这些声音是不会播放的。
媒体声音:一般为 App 播放音视频时的声音,音量大小可通过物理音量 + - 键来控制,但它不受设备静音开关键的控制,即当静音键开启时,我们仍然可以通过相关 API 正常播放声音。
CocoaPods 1.7 新特性
上个月,CocoaPods 在发布了 1.6.0 正式版不久后,就马上开始了 1.7.0 Beta 版的公测,它在先前版本重写底层架构的基础上进行了大量的扩展,是一次巨大更新。
本文将介绍 1.7.0 的几个新特性,主要总结自 CocoaPods 官方博文《CocoaPods 1.7.0 Beta!》,如有描述不当的地方,请查阅原文:
CocoaPods 1.6 概览
前几天,CocoaPods 官方博客发布了一篇新博文《CocoaPods 1.7.0 Beta!》,看到标题你可能会有点慌,1.6 正式版不是刚发布吗,这么快 1.7.0 就开始 Beta 版了?!
TestFlight 内测邀请弹窗的实现
最近,我们在使用一些 App 时经常会遇到,在 App 刚启动不久后有时我们会看到一些内测弹窗,类似 “恭喜您获得内测资格,诚邀您体验新版本…”,然后点击下载按钮时就会跳转到 TestFlight 中安装测试版本,(注意不是跳转到 App Store 中更新最新版本哦),而且用户无需输入任何测试邀请码。