开发中不时会遇到 [obj callMethodWithCompletionBlock:^{ [obj doSomething] }] 这种写法。调用一个 OC 实例对象的带有 block 回调的方法,并且 block 实现又引用了该实例变量。写到这里经常会犹豫,要不要弱引用该实例变量,会不会造成循环引用。本文通过 Demo 演示了相关的几种情况,并对内存管理加以分析。
像素如何被绘制到屏幕上(译)
前言
之前看到一篇很好的关于视图渲染的文章(Getting Pixels onto the Screen),最近项目中遇到一些帧率优化的问题,想起来又阅读了一遍,并且抽时间进行了翻译,以便今后学习查阅。正文
将内容显示到屏幕上,有许多方式可以实现。这个过程包含许多框架,依靠许多函数和方法的组合实现。本文讨论该过程的底层原理。当你需要考虑相关性能问题时,本文内容能够帮助挑选最优的 API。本文研究的对象是 iOS 系统,不过其中大部分内容也适用于 OS X。
Git 回滚多次提交最佳实践
一、前言
在开发过程中有这么一种情况,某个特性开发的代码需要回滚,但是该特性的开发提交和所有即将上线的提交处于统一分支,此时需要将该特性相关的提交依次回滚。在回滚代码时希望满足两个要求,能够保留详细的回滚日志信息、只产生一次提交记录。
ARC 内存管理和 GCD
前言
Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks 这本书篇幅不多,可分为如下3部分,共8个章节。
内存管理基础知识:第一章、Life Before Automatic Reference Counting;第二章、ARC Rules;第三章、ARC Implementation。
Block:第四章、Getting Started with Blocks;第五章、Blocks Implementation。
GCD:第六章、Grand Central Dispatch;第七章、GCD Basics;第八章、GCD Implementation。
本文为该本书的读书笔记,Block 相关的内容比较多,参考这篇文章。
UTI,Uniform Type Identifier
可循环滚动的 ScrollView
初试项目管理,个人经验小结
Objective-C 消息传递
OC 为动态运行时语言,其将许多决策从编译和链接时延迟到运行时执行。OC 中的方法调用本质为消息传递,[receiver message] 可以解释为向 receiver 对象发送 message 消息。今天阅读了 Apple 开发文档的 Messaging 章节,利用运行时系统提供的相关方法,OC 消息传递式的方法调用最终转换成了标准 C 语言函数调用方式,实现了统一。
本文以 Apple 开发文档为基础,讲述 OC 以消息传递方式实现方法调用的执行流程。第一节介绍执行消息解析的函数;第二节讲述消息解析过程中,消息对应的方法实现是如何寻找的;第三节讲述方法实现找到后,如何执行。