最近一年多都在负责组件化和工程建设的相关事情,换了工作之后可能有段时间都不会接触这块的东西,所以这里记录下主要做了哪些事情。 从 pod install 开始 iOS 的包管理工具主要是 CocoaPods , Swift Package Manager (aka SPM) 和 Carthage 。其中 CocoaPods 是历史最悠久的,第一次提交可以追溯到十年前 :Ten years...
Promises 的 Swift 实现
Promises 的 Swift 层是基于 Objective-C 层实现的,借由 Swift 的特性,提供了更加安全和便捷的接口。 基础属性 Promise 为 Swift 层提供的类,由于 Swift 有命名空间,所以不需要添加前缀。 Promise 内部定义了一个 alias ,使得调用更加清晰: public typealias ObjCPromise<Value: An...
Promises 的 Objective-C 实现
https://github.com/google/promises 是 Google 开源的 Promise 库,支持 Objective-C 和 Swift , podspec 分为 PromisesObjC.podspec 和 PromisesSwift.podspec ,可以看到 PromisesSwift.podspec 的 dependency 为 PromisesObjC 。下...
Promise - 介绍
异步代码的问题 通常来说,异步操作都会通过 block 的方式来执行回调,block 的参数会提供结果和错误。如果需要执行多个异步操作,需要将第二个异步操作嵌套在第一个操作的 block 中,同时也需要处理错误。在这样的嵌套代码中进行修改会变得非常痛苦。 Objective-C 的异步嵌套代码: - (void)getCurrentUserContactsAvatars:(void (^...
FBAllocationTracker
简单介绍下 FBAllocationTracker 是 Facebook 开源的一个用于查找当前存活的 Objective-C 对象的工具库。 FBAllocationTracker 提供了查找在内存中的 Objective-C 对象的接口。它可以获取指定类的所有对象,也可以像 Instruments 那样进行内存增长标记,然后只查找标记时间内创建的对象。 FBAllocationTrack...
Objective-C Direct Methods
Objective-C Direct Methods Clang 13 documentation commit : Implement attribute((objc_direct)), attribute((objc_direct_me… · llvm/llvm-project@d4e1ba3 Clang 13 新增了 objc_direct 声明,对应的 Xcode 版本为 1...
一种使用 CocoaPods 同步 Git hooks 的方案
Git hooks 是什么 Git hooks 是一段脚本,可以在 Git 执行某些操作之前或者之后执行,比如说 commit , push 或者 receive 。随便打开某个 Git 项目的目录,可以在 .git/hooks 这个目录下看到 Git hooks 的示例代码,不过都是以 .sample 后缀结尾,需要把 .sample 去掉后才会生效。 Git hooks 可以使用多种语...
CocoaPods 学习记录 - 官方文档
CocoaPods 的官方文档写得比较详细,建议都过一遍,以免用错方法和漏掉一些可以提高效率的小技巧。 pod install vs pod update CocoaPods Guides - pod install vs. pod update 很多人都认为只有在第一次配置 CocoaPods 时才使用 pod install ,后面都是使用 pod update ,然而事实并非如此...
IGListKit - 完结篇
IGListCollectionViewLayout IGListCollectionViewLayout 其实不太算得上是 IGListKIt 的内容,它主要作用是提供一个可变宽度和高度的流式布局。看下来发现这块写得太好了,从里面可以学到很多如何高效编写一个自定义的 UICollectionViewLayout 的相关技巧。 IGListCollectionViewLayout 提供了...
IGListKit 的数据处理 - Updater&Diff
IGListAdapterUpdater 在初始化 IGListAdapter 时提供了一个 id<IGListUpdatingDelegate> updater 参数,调用者可以自己自定义一个支持 IGListUpdatingDelegate 协议的类,来实现 IGListUpdatingDelegate 的方法。 IGListAdapter 在更新 UICollection...