在开发 iOS App 时,很多应用都要根据当前 App 内容颜色来设置 iOS 系统状态栏 的配色,黑色或者白色——尤其是在 iOS 13 系统支持了黑色模式后。
通常,别人会告诉你这么做:
1 |
UIApplication.shared.statusBarStyle = .default |
但这会触发警告:[crayon[……]
在开发 iOS App 时,很多应用都要根据当前 App 内容颜色来设置 iOS 系统状态栏 的配色,黑色或者白色——尤其是在 iOS 13 系统支持了黑色模式后。
通常,别人会告诉你这么做:
1 |
UIApplication.shared.statusBarStyle = .default |
但这会触发警告:[crayon[……]
不少人在开发中都会遇到 EXC_BAD_ACCESS ,很遗憾,这一次 Xcode 不会给出任何详细的解决方案。
通常来说,这是由于内存错误造成的。简单来说就是你创建了对象 A,但在后来访问的时候,内存里 A 这块区域已经被系统挪做他用了,比如放了对象 B 在这里——你的[……]
处理时间和日期是软件开发中很常见的操作,几乎所有的编程语言都提供了对应的 API 来方便开发者对时间日期进行处理,Swift 也不例外,比如 DateFormatter ,使用它你可以将任意 Date
通常来讲,Swift 里的 String 是和 NSString 桥接的,比如我曾写过 NSString 和 String 究竟 有什么区别 ?,总之这里我们主要来讨论一下,String[……]
今天学员群里有人提了这么一个问题,为什么把特性的字典类型作为泛型类型约束的时候,就必然报错?
1 |
inheritance from non-protocol, non-class type 'Dictionary<String, Any>' |
显然,说的很明确了,“你不能从一个非协议、非类的类型继承”。显然,字典是个泛型结构体……
那么解决思路也很明确了,创建一个[……]
在开发落格输入法的过程中,我就一直被一个问题所困扰,那就是当用户点击在屏幕左侧边缘时, UIButton 的 touchDown event 几乎变成了 [crayon-6[……]
在 iOS 开发中,我们经常会用到 Timer 这个类,用来进行一些重复或者延迟调用。
不过,在实际的使用中,如果你是用来周期地更新 UI,则会发现 Timer 的调用经常会[……]
做开发者肯定有过这样的烦恼:版本号提交错了!
编译和测试的版本多了,难免提交的时候才发现版本号搞错了。要不就是后台版本号正确,前台的版本号忘记更改。其实,可以让前台自动获取后台的版本号数据,比如这样:
1 2 |
let info = Bundle.main.infoDictionary! version.text = "Version \(info["CFBundleShortVersionString"]!) (build \(info["CFBundleVersion"]!))" |
后台的版本号[……]
一年前,我在 git 上发布了一个用 Swift 实现的栈,一共有两个版本。因为 Swift 自身并没有实现这个东西——尽管官方的教程中泛型的部分就是用这个栈举的例子。
也许是人家觉得这个太简单了吧
总之,这次我又来玩这个东西了,因为 HMM 的 Viterbi 算法需要做修剪,不然路径太多无谓[……]