Swift 的逃逸闭包和非逃逸闭包
Aug 30, 2020
Swift 里的闭包(Closure)对应 ObjC 里的代码块(Block)。 众所周知,在闭包里引用外部变量其引用数会递增,但如果是在闭包所在的方法内部立即就…
*** -[UIKeyboardLayoutStar release]: message sent to deallocated instance
Aug 29, 2020
项目里使用了 Swizzlling Method 黑魔法来防止 NSArray 越界之类的崩溃。 App 在使用键盘时切换到后台,就会触发一个非法访问的崩溃: *** -[UIKeyboardLayoutStar release]: message sent to deallocated instance ... 去掉黑魔法造成的风险太…
NS_ASSUME_NONNULL_BEGIN & NS_ASSUME_NONNULL_END
Aug 29, 2020
ObjC 里一切都是对象指针,对象之前传值是传指针引用。 Swift 里一切都是对象,参数传递分为值引用和对象引用。 在 ObjC 的方法里,可以判断传进来的指针是否为 ni…
pmset 合盖省电设置
Aug 27, 2020
查看当前的电源管理设置: pmset -g 电源管理模式设置: -a: 所有模式生效 -b: 电池供电生效 -c: 使用接头外接供电生效 -u: UPS 供电生效 hibernatemode 休眠模式 0: 数据仅保持在内存里,…
Google Chrome standalone
Aug 26, 2020
Windows x64 https://www.google.com/chrome/?standalone=1&platform=win64 Windows x32 https://www.google.com/chrome/?standalone=1&platform=win32 macOS https://www.google.com/chrome/?standalone=1&platform=macos Linux https://www.google.com/chrome/?standalone=1&platform=linux
实现一个线程安全的缓存库
Aug 25, 2020
最近做了一个基于 LRU 策略的缓存 ZLRUCache,自己玩着感觉还可以。 …
TARGETED_DEVICE_FAMILY 编译选项说明
Aug 22, 2020
TARGETED_DEVICE_FAMILY 是 Xcode 编译选项里的一个字段,用于标识当前项目适用于哪些硬件设备。 …
禁用 Adobe Cloud 自启动
Aug 10, 2020
在 Terminal.app 中执行以下命令。 禁用: launchctl unload -w /Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist 启用: launchctl load -w /Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist
扩展 UIButton 支持 spacing 并完美兼容 AutoLayout
Jul 21, 2020
众所周知,UIButton 是不支持设置图像和文字间距的。 网上的文章大多数都是通过调节 titleEdgeInsets 和 imageEdgeInsets 达到把图像和文字分开的目的,但是这个方法并不能自动改变按钮的大小,所以带来的问题就是调整了间距之后还需要再计算按钮的大小,而且对于 AutoLayout 无法进行自动适应大小。 …
CoreText note: Client requested name .SFUI-Regular
Jul 14, 2020
开发的时候发现控制台输出如下日志,说是不要直接使用 .SFUI-Regular 作为字体名称。 …