I'm TualatriX - RSS Feed

Hello! This is TualatriX's blog

Latest articles

从 2016 年的一个视频再谈 SwiftUI 的理念、现状与未来

今天看了一个 2016 年的 WWDC 视频,即 WWDC16 Session 419 之《Protocol and Value Oriented Programming in UIKit Apps》。如果你写过 SwiftUI,那么一定会觉得这个标题就是在讲它,毕竟 SwiftUI 就是基于 Protocol 和 Value 的图形编程。 看过这个视频后,可以联想到 Apple 在准备 WWDC16 的前后,就已经开始着手准备打造 SwiftUI 这个下一代图形编程了,尽管它要在 2019 年才会正式宣布 1.0。确实在 2019 年 6 月 4 日的时候,来自 Swift 核心小组的开发者 Joe Groff 也曾这样透露过: Combine goes back before even...

记一次容量降级带来关于「整理数字空间」的思考

十月一日的时候,我收到了首发时订购的 iPhone 13 Pro 远峰蓝 256GB,开始了从上个手机 iPhone 11 Pro Max 512GB 数据迁移之旅。本以为我的手机数据量不多,做这个「容量降级」的决定是对的。哪知没有做好功课,导致将数据从旧手机传输至新手机过程中差点失败。最后我靠删除 App 临时解决了问题,也引起了对自己数字空间管理的一个思考。 前情提要 在更换至 iPhone 13 Pro 256GB 之前,我用的是 iPhone 11 Pro Max 512GB,大概用了一年半。基于以下两点,是我决定换成机身更小的,同时容量也更小的机型: Pro Max 实在是有点大,单手操作不便,而我还会有经常单手打字的场景,于是决定用回稍微小一点的 Pro; 512GB...

迁往 Swift 5.5 Concurrency 之路:重构方式的选择

最近 Xcode 13 RC 已经正式发布了,Swift 5.5 Concurrency 可以说是这次最大的更新。本篇文章总结一个我在一个老项目上以重构的方式迁移使用 Concurrency 特性时遇到的一个问题,相信也将会是很多人也会遇到的情况,所以写文章记之。 我能用上 Concurrency 吗? 目前为止,大多数的开发者可能觉得 Swift Concurrency 这个只能部署在 iOS 15 上的特性,暂时用不起来,两年后再说。不过,Apple 可能很快就会将 Concurrency 的 Back-Deploy 完成,让大家可以用在 iOS 13 和 macOS 10.15 及以上的系统。可以见我昨天发在推上的、最近的一次关于这个工作的跟进:https://twitter.com/tualatrix/status/1436342262510669828...

如何扩展 Combine:以给 UIButton 设置 title 为例

我的 PasteNow 用了 Apple 自带的 Combine 库来实现一些响应式的设计,因为之前有 RxSwift 的使用经验,因此上手 Combine 比较快,加上是系统自带的,用起来也非常顺手。于是我最近还在做另外一件事情:迁移其他旧项目的 RxSwift 代码至 Combine。因为 Combine 作为 iOS 13/macOS 10.15 就引入的系统库,现在已经到了可以普遍采用的程度了,是时候和 RxSwift 说再见了。 毕竟 RxSwift 发展了那么多年,生态还是比 Combine 要丰富一些。于是在从 RxSwift 迁移至 Combine 的过程中,我遇到了不少 RxSwift 可以非常方便做到的事情,但在 Combine 默认不太方便。好在我们可以去扩展 Combine,就让我用一个...

如何自定义 PasteNow 的音效

在刚刚发布的 PasteNow 1.9 里,「音效」是让不少用户等了蛮久的功能。现在 PasteNow 可以通过声音这个反馈,让用户知道是不是复制成功一个内容了。不过也有用户和我反馈,这个声音比较沉闷,能不能换成清脆点的声音?本篇即是来指导大家,如何自定义 PasteNow 的音效。 我在实现 PasteNow 的音效功能的时候,就有意去设计得简单点,不想增加自定义、调整音量大小之类的选项,用户只要一勾就行了。当然这肯定无法满足 100% 的用户的需求,那些需要个性化的需求怎么办?有更高级的方式可以达到。 PasteNow 的音效,其实是选自系统音效中名为“Frog”这个声音。然后,我在实现的过程中,预留了用户通过命令行的方式更换成自己想要的声音的机制,更换方式很简单,打开终端输入这条命令即可:...

PasteNow 1.9:粘贴音效、iOS 剪贴板同步+新的置顶功能

PasteNow 1.9 已经于昨日正式发布了,增加了些新功能,比如粘贴音效,iOS 剪贴板+新的置顶功能,而后两个功能是通过「实验室」来达成的。另外也有整整两个大版本没有写过更新文章了,于是就想在这个版本好好写一篇吧。 可能是自己比较懒,也可能是觉得已经在 App Store 里写了详详细细地更新说明了,就没必要再写一篇更新文章了,于是在六月的那篇《PasteNow 1.6 正式发布:增加粘贴项目并提前的选项,完善搜索粘贴体验》,再也没有以文章形式写过 PasteNow 了,其实我是比较惭愧的。更新说明(Release notes)承载的信息有限,即没有办法有丰富的如视频这样的信息,也没有办法好好讲讲背后的理念,所以,今天就好好补上! 1.7~1.8 小回顾 这两个多月的时间,PasteNow...

Manico 八周年小记

今天看到备忘,发现 Manico 已经 8 岁了。2013 年 7 月 23 日我写过一篇《写在Manico 1.0正式发布后》,记录了围绕 Manico 前前后后的一些事情。记得我是从这款作品开始给自己贴上「独立开发」的标签的,作为我的第一款 macOS 上的收费软件作品,八年后再看这篇文章,回顾当时仍有不少亮点,也可以看到略显稚嫩的部分。今天,就当温故而知新,以此再展望一下未来吧。 一次真正的独立开发+独立销售 「独立开发」这个词,近来我已不太多提了。一来是觉得老贴个标签意义不太,二来是将重点转向做更好的产品,而不是强调什么独不独立。在 2013 的时候,做一个独立开发确实是一件新鲜且很酷的事情,现在回想,当时我做了真的很多工作,不仅是独立开发,还因为有独立销售。 Manico 的初个版本因为有一些技术上的问题没有解决,所以当时没办法上架...

PasteNow 1.6 正式发布:增加粘贴项目并提前的选项,完善搜索粘贴体验

继上个版本 1.5 后刚好两周,今天 PasteNow 1.6 又发布了。这个版本针对部分用户更习惯于将用过的内容提前的行为增加了相关选项,并且优化了搜索并粘贴的体验。现在 PasteNow 用起来更便捷了。让我来详细介绍一下吧! 将最近用过的项目提至最前 在 PasteNow 的最近几个版本中,我收集到不少用户的反馈,想要最近用过的项目移至最前这个行为。因为最近用过的内容有几率可能再被用到,所以重新排序是比较合理的。而且从剪贴板历史记录按时间排序的角度也很合理:被写入过剪贴板的内容,无论是不是以前也产生过的内容,此刻它就是一条新的内容。 PasteNow 一开始没有做成这样,是因为我一开始就把 PasteNow 设计为「顺序/逆序粘贴」的场景下去使用了。比如我常常会复制几条内容,然后会立刻去对应的...

PasteNow 1.5:完善多屏幕支持+撤消删除功能+清空剪贴板支持

继 4 月 23 日发布了 PasteNow 1.3 版本后(见《PasteNow 1.3:完善快捷键体验+未来计划》),过去三周, PasteNow 又迭代了三个版本,目前最新版本是 1.5.1。过去几个版本,PasteNow 按之前的所计划的那样,完善了多屏幕方面的支持,同时也带来了其他未在计划中的不少新特性。就让我在本篇中详细介绍一下吧! 多屏幕下的体验完善 PasteNow 刚刚发布的时候,我就了解到有不少用户是在多显示器下的环境下工作的,大多用户都是一台 MacBook Pro 加一台外接显示器,有时候可能会用「随航」功能把 iPad 做为第二个或第三个屏幕。而我因为最近的使用习惯是只用单屏幕(一个 4K 的外接显示器),因而在开发过程中没能发现 PasteNow 在多屏幕下的一些问题。...

PasteNow 1.3:完善快捷键体验+未来计划

半个月前我发布 PasteNow 之后,在头几个版本中,我解决了一些比较严重的、优先级比较高的问题,同时收到了大量的非常有用的反馈。这些反馈让我知道了大家对一款优秀的剪贴板工具有什么样的期望,这些期望也足矣让我在未来的几个月好好去消化、设计并打造出一个更好用的 PasteNow。 今天这个 1.3 版本则把重点放在了完善快捷键体验上。借着这个版本发布之际,我也要分享一下大家关心的未来(iOS)计划。 1.3 版本的全快捷键体验 剪贴板工具的最首要目标就是提升日常操作效率,我也收到了很多用户对很多快捷键操作的反馈,因此最近几个版本,我专注在提供原生快捷键操作的体验上。到 1.3 版本为止,PasteNow 已经是一款可以几乎可以用全键盘操作来完成的剪贴版工具了,也就是说,你可以双手不离键盘完成以下操作:...

Discover, share and read the best on the web

Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!