如何在验证失败的情况下发布 Pod

前言

在 CocoaPods 发布 Pod 的最后一步是执行 pod trunk push 命令,pod-trunk 首先会对你创建的 Pod 进行验证,验证通过才允许上传。

有时,希望在 Pod 验证失败的情况下也能够上传,关于这种做法是否合理 这里 有相关讨论。讨论中 @mxcl 给出了一种绕过发布前验证的方法,如下文所述。

正文

pod 命令使用 Ruby 写成,使用解释型语言的好处是我们可以方便的修改命令的逻辑。只要找到目标代码,注释掉验证 Pod 的逻辑便能达到目的。

首先执行 gem env,如下变量给出了 Ruby 库安装的位置。

1
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.4.0

当前,pod trunk push 命令文件对于 Ruby 库根目录的相对位置是 gems/cocoapods-trunk-1.3.0/lib/pod/command/trunk/push.rb,只要注释掉如下一行代码即可。

1
2
3
4
5
6
7
8
def run
update_master_repo
# validate_podspec # 删除验证逻辑
status, json = push_to_trunk
update_master_repo

# ...
end

callMethodWithCompletionBlock 中 Block 的内存管理

开发中不时会遇到 [obj callMethodWithCompletionBlock:^{ [obj doSomething] }] 这种写法。调用一个 OC 实例对象的带有 block 回调的方法,并且 block 实现又引用了该实例变量。写到这里经常会犹豫,要不要弱引用该实例变量,会不会造成循环引用。本文通过 Demo 演示了相关的几种情况,并对内存管理加以分析。

Read More

像素如何被绘制到屏幕上(译)

前言

之前看到一篇很好的关于视图渲染的文章(Getting Pixels onto the Screen),最近项目中遇到一些帧率优化的问题,想起来又阅读了一遍,并且抽时间进行了翻译,以便今后学习查阅。

正文

将内容显示到屏幕上,有许多方式可以实现。这个过程包含许多框架,依靠许多函数和方法的组合实现。本文讨论该过程的底层原理。当你需要考虑相关性能问题时,本文内容能够帮助挑选最优的 API。本文研究的对象是 iOS 系统,不过其中大部分内容也适用于 OS X。

Read More

Git 回滚多次提交最佳实践

一、前言

在开发过程中有这么一种情况,某个特性开发的代码需要回滚,但是该特性的开发提交和所有即将上线的提交处于统一分支,此时需要将该特性相关的提交依次回滚。在回滚代码时希望满足两个要求,能够保留详细的回滚日志信息、只产生一次提交记录。

Read More

代码混淆

class-dump 可以方便的导出 app 的类名和方法名,即使编译好的程序也能被第三方清晰看到编码信息。为了隐藏这些信息,可以对代码进行混淆,使得用如 class-dump 工具导出的类名和方法名变成毫无意义的乱码。

Read More

实现 GitHub Pages 的评论系统

前言

2018-10-29 更新:

最近买了个虚拟主机,可以简化前端工作,而且服务端使用命令行工具,也不会像前端实现这么复杂。旧的使用 GitHub API 方式的实现,可以访问
这个链接


本博客系统使用 GitHub Pages 服务。基本上所有文件为纯文本文件,使用 Git 执行版本控制并托管于 GitHub。GitHub Pages 在后台使用 Jekyll 将当前提交内容编译成静态站点,实现网站发布。

Read More