在 SwiftUI 中使用 Metal Shader

摘要: 简介 从 iOS 17/macOS 14 开始,SwiftUI 支持使用 Metal shader 来实现一些特效。主要提供三个 View Modifier:colorEffect、 distortionEffect 和 layerEffect 。每个 modifier 的第一个参数是传入的 Sha 阅读全文
posted @ 2024-03-22 21:31 westwindrest 阅读(130) 评论(0) 推荐(1) 编辑

Swift Structured Concurrency

摘要: 异步函数 异步函数概念 异步和并发是两个不同的概念,并发(Concurrency)是指多个任务同时执行,这里的同时不是严格意义上的同一时刻,而是在稍大时间粒度上,多个任务可以同时推进,并发的实现可以是单线程,也可以是多线程、多核、多设备。 在 Swift 中,异步函数是一种特殊的函数,它可以在执行过 阅读全文
posted @ 2024-03-21 15:53 westwindrest 阅读(9) 评论(0) 推荐(0) 编辑

iOS Modern Collection View

摘要: TL;DR 使用的技术: Compositional layout + Diffable data source。iOS 14+。 创建 layout 以描述布局; 创建 dataSource 以提供数据和 view: 使用 CellRegistration 和 dequeueConfiguredR 阅读全文
posted @ 2023-04-09 11:35 westwindrest 阅读(142) 评论(0) 推荐(0) 编辑

SwiftUI 笔记

摘要: TextField 监听 lost focus 之前有一个初始化方法,传入一个 onEditingChanged closure,但这个方法废弃了,文档中也说了 alternative:使用 FocusState 来管理 focus 状态,即使用 focused(_:equals:) 来传入一个 B 阅读全文
posted @ 2022-07-19 10:31 westwindrest 阅读(55) 评论(0) 推荐(0) 编辑

日常问题及其解决方案

摘要: oh-my-zsh 在一些含有 git 的目录下运行非常慢 git config --add oh-my-zsh.hide-status 1 git config --add oh-my-zsh.hide-dirty 1 来源 阅读全文
posted @ 2022-05-05 09:40 westwindrest 阅读(27) 评论(0) 推荐(0) 编辑

一些 AppKit 的坑

摘要: NSTextField 在 NSTableView 中需要先点一次再点一次才能编辑、且 hover 时鼠标指针不变化 在 storyboard 里,将 NSTableView 的 Highlight 设置为 None NSTableCellView 动态高度实现 在 VC 里持有一个 measuri 阅读全文
posted @ 2022-01-10 13:06 westwindrest 阅读(86) 评论(0) 推荐(0) 编辑

【已失效】Xcode GUI 添加 SPM 依赖的时候访问不了 github,无视 git config proxy 配置解决方案

摘要: 此 openradar 中提出者指出了原因:Xcode 调用 libgit2 时传入了 GIT_PROXY_NONE,无视了 git config 中的 proxy 配置。作者说用了自己打的 libgit2 包可以解决问题,但没说具体怎么操作。 看了一下 libgit2 里的声明: /** * Do 阅读全文
posted @ 2021-12-22 12:43 westwindrest 阅读(538) 评论(0) 推荐(0) 编辑

C++ Concurrency in Action 读书笔记三:并发操作的同步

摘要: Chapter 4 并发操作的同步·Synchronizing concurrent operations 阅读全文
posted @ 2019-08-13 17:38 westwindrest 阅读(178) 评论(0) 推荐(0) 编辑

C++ Concurrency in Action 读书笔记二:用mutex互斥锁保护在线程间共享的数据

摘要: Chapter 3 线程间共享数据 3.2 用互斥锁保护共享数据 阅读全文
posted @ 2019-08-09 00:50 westwindrest 阅读(226) 评论(0) 推荐(0) 编辑

C++ Concurrency in Action 读书笔记一:thread的管理

摘要: 为避免混淆,用 thread 表示 及其对象实例,用 线程 表示操作系统概念下的线程 Chapter 2 的管理 2.1 的创建(构造函数) a. 默认构造函数 创建一个placeholder,不和任何线程关联。其使用场景如定义一个 数组。可以在之后通过 来赋予值以和线程关联 b. Move构造函数 阅读全文
posted @ 2019-08-08 23:41 westwindrest 阅读(356) 评论(0) 推荐(0) 编辑