#ios

如何正确的刷新 Epoxy 列表可以说是熟练使用这个框架的关键,初上手时总会有 “为什么列表刷新后数据没变” 和 “为什么它刷新后数据就变了” 的疑惑。 本文从源码分析的角度,带大家来梳理 Epoxy 列表刷新的原理,并学会如何正确刷新 Epoxy 列表。
Swift 的 lazy 关键字一直有一个很容易被忽略的问题,那就是它不是线程安全的。
常规的在扩展中定义存储属性的方法是借助 Objective-C 的 runtime 进行属性关联。但是这个方法仅限于 ObjC 类,那么纯 Swift 类,比如结构体该怎么办呢? 在 epoxy 这个库中发现了解决办法。
记录一个最近发现的小细节:UIImage.size 和 CGImage.size 在一些情况下是不相等的。
最近在学习使用 Tuist 生成项目,摆脱烦人的 .xcodeproj。但是 Tuist 好用虽然好用,但是因为最近文档正在迁移,加之一些东西只能从示例中发掘,整个学习过程有点费劲。所以开一篇文章记录一下。
最近在研究 Tuist,一个用来管理 Xcode 项目的工具。这个工具好像从 4.0 版本开始,创建新项目默认就是 SwiftUI 模版了,所以需要手动再从 SwiftUI 改回 UIKit。 在改动过程中发现 SceneDelegate 不执行,搜索了一番后找到了解决方案,在此记录一下。
CGO 是一种在 iOS 平台上运行 Go 代码的方案。而 WireGuard 一种 VPN 技术,其中包含了一部分 Go 代码,同时项目提供了一个 Makefile 脚本,使用 CGO 来将相关代码编译成 iOS 静态库。 写这篇文章的契机是,因为希望使用 Mac Catalyst 将内部工具带到 macOS 平台,我又回过头去看一年前(恰巧是22年3月)研究 WireGuard 的过程。 发现虽然当时的研究成功,.xcframewrok 文件还在,但是过程已经模糊不清了。另外还需要针对 Mac Cataglyst 构建出新的静态库,所以又要从头进行梳理不过好在是 “模糊不清”,而不是 “一干二净”,多少还记得一些。
最近开始阅读学习 epoxy 的源码,开个新的系列来记录一下学习成功。
虽然国内实际开发用 Swift Package Manager(后称 SPM)的比较少,但是国外的一些开源库里却经常用到。所以经常遇到项目 clone 下来之后,SPM 加载失败导致项目无法运行的问题。 网上关于 SPM 加速的文章也有很多,方法也是五花八门,本文挑选几个进行记录。
下文主要针对各种加圆角的情况进行实践,看看会不会出现离屏渲染的情况。
最近要负责面试,于是各处搜罗了一些面试题,用于笔试(不包含算法),也当作自己的一个复习。
最近要负责面试,于是各处搜罗了一些面试题,用于当面面试使用(非笔试题),也当作自己的一个复习。同时提供了一个我自己角度的评判,仅供参考。
UICollectionViewCompositionalLayout 是 Apple 在 iOS 13 引入的,用于构建基于组合的 UICollectionView 布局的类。它允许开发者根据一系列的组合布局,更轻松、更灵活地创建复杂的 UICollectionView 布局。 本文主要围绕 UICollectionViewCompositionalLayout 中 “可组合” 这个特性进行讨论。
本篇主要讲解 NSCollectionLayoutGroup 内 “子视图” 的填充方式。 算是为 UICollectionViewCompositionalLayout 的讲解做一些铺垫,毕竟把 Item 的填充方式了解清楚了之后,才能组合多种 Group 来进行更复杂的布局。
本篇文章记录使用 NSCollectionLayoutSection 类的 orthogonalScrollingBehavior 属性的过程中遇到的问题。 通过设置该属性可以控制对应 Section 的滑动效果。
使用 match 命令更新开发证书的时候,遇到了 503 Service Temporarily Unavailable 的报错,搜到解决方案后想着还是记录一下吧。
最近尝试使用 Mac Catalyst 将 App 移植到 macOS 上,打包时遇到了该问题,故记录一下。