Home

MacBook 升级 SSD 硬盘指北

我的手上自己的 MacBook Air 2015 13‘’ 是大概 16 年的时候买的,当时不懂具体需求,也没多少钱,买的是 8G + 128G 的配置,装了 Xcode 之后才知道社会的险恶🥶。前段时间 Xcode 12 需要更新,我把我电脑里能移的、能删的、能存iCloud的全处理了,才空出 30G 的空间更新 Xcode(虽然它在 App Store 上显示只要 4G)。然后再仔细一看电脑,我自己的文档 + 常用应用程序大概加起来 15G 不到,Xcode + 系统文件 + 微信 + 系统的”其他”文件大概是 70G,之后又赶上 Big Sur 更新,Big Sur 安装包就 12G,然后他还要 20G 的空间来更新……这时我意识到我只要装了 Xcode 就不要再想更新系统了。于是我硬着头皮在网上搜索了很多,发现是可以给 MacBook 升级 SSD 硬盘的!在此以我这次升级记录给大家做个参考。

UpdateSSD

Read more

响应链及手势识别

在上一篇「事件传递及响应链」中介绍了当屏幕上发生一次触摸之后,系统会如何寻找「第一响应者」,在寻找到「第一响应者」之后,如何确定「响应链」以及如何沿「响应链」传递事件。在上一篇文章的环境中,是不使用 UIGestureRecognizer 的。但是在我们平时的开发中想要给一个 UIView 加上处理事件的能力的话,使用 UIGestureRecognizer 及其子类比继承一个 UIView 的类、重写 touches 方法要方便的很多。这两种方法对事件的处理机制相互影响又有所不同。这也是本文的讨论内容:通过响应链及手势识别处理事件。

Responder Chain Z

Read more

事件传递及响应链

试想一下假如你是一台手机📟,当有人触摸了屏幕之后,你需要找到他具体触摸了什么东西,他可能触摸是一个按钮,或一个列表,也有可能是一个一不小心的误触,你会设计一个怎么样的机制和系统来处理呢?假如有两个按钮重叠了,或者遇到在滚动列表上需要拖动某个按钮的情况,你设计的机制能正常的运作嘛?在 iOS 中系统通过 UIKit 已经为我们设计好了一套方案,也是本文浅谈的内容: iOS 中的事件传递及响应链机制。

Responder Chain

Read more

内存安全

一般来说,Swift 会阻止代码中的不安全行为。例如,Swift 会保证变量在被使用前已经初始化,在释放某变量后其内存也会变得不可访问,以及检查数组索引是否存在越界错误。

Swift 还通过要求修改内存中位置的代码具有对该内存的独占访问权,来确保对同一内存区域的多重访问不会产生冲突。由于 Swift 会自动管理内存,因此大多数时候你根本不需要考虑内存访问的问题。然而,了解什么地方会有潜在的内存冲突发生也是很重要的,这样你就可以避免写出对内存访问有冲突的代码。如果你的代码中确实包含冲突,则会出现编译时错误或运行时错误。

Read more

关于 Storyboard 的一些小技巧

用了 Storyboard 很久了,在这记录一些使用 Storyboard 时的一些小技巧和小问题。主要内容有:Unwind Segue、@IBInspectable、Storyboard Reference 以及 Container View。

Read more

圆角的处理

原文出自 AsyncDisplayKit (现在叫 Texture )文档中的一篇关于圆角的文章:Corner Rounding。主要介绍了使用原生 .cornerRadius 的缺点,以及为什么会导致性能损失的原因,另外描述了在不同的情况下,设置圆角的最佳策略,最后给出了 Texture 中的调用方式。

Read more

自定义切换白天黑夜的 UISwitch

前段时间在做自己 App 适配 Dark Mode 的时候看到了一个Procreate的动画教程以及该视频简介中的灵感来源,觉得还挺有意思的,想着复杂的东西我做不出来做个这个总可以吧嘿嘿嘿,于是准备仿照风格着手实现一下。以下是我实现的效果,左侧是白天,右侧是黑夜。

Read more