(Xcode) 編譯器小白筆記 - LLVM前端Clang

本文为笔记型式呈现,并非全部原创,来源见文末

Compiler

Three-Phase编译器架构

Clang - LLVM

Apple(包括中后期的NeXT) 一直使用GCC作为官方的编译器。GCC作为开源世界的编译器标准一直做得不错,但Apple对编译工具会提出更高的要求。

Clang这个软体专案在2005年由苹果电脑发起,是LLVM编译器工具集的前端(front-end),目的是输出程式码对应的抽象语法树(Abstract Syntax Tree, AST),并将程式码编译成LLVM Bitcode。接着在后端(back-end)使用LLVM编译成平台相关的机器语言 。

MDCC2016的 session

年轻人,听说你想使用Framework - 基礎觀念

Frameworks

本文為譯文,並已取得作者Nick Teissler同意。
原文鏈接:原文

Framework這小子問了幾個很好的問題

本文章適合初學Framework的讀者。

前言

Apple 已經將 iOS, macOS 的代碼分成 Modules, libraries, frameworks。

Frameworks 的設計不單單只是為了封裝資源跟模塊化代碼,更不只是為了減少代碼的重編譯時間而已。

要想減輕代碼量、加速Debug、增加代碼復用性,就不能只知道Framework是一個可以拖來拖去的工具箱,必須更近一步的了解這些:

  • 靜態庫 - Static Libraries
  • 動態庫 - Dynamic Libraries
  • Framework的結構
  • Linking 鏈接 與 Embed 嵌入的不同
  • Q & A

以下內容適用 macOS, tvOS, iOS. 可能會隨時間有改動。

UICollectionViewLayoutInvalidationContext性能优化 详细流程图 + 范例

起步基础

  • UICollectionViewLayout 基本使用

  • UICollectionViewLayoutAttributes

Attributes赋值

这里泛指了以下两个主函数,就不在赘述两个功能,以及 UICollectionViewLayoutAttributes 需处理的变量。

1
2
3
4
5
6
7
8
9
10
11
class AutoSizingLayout: UICollectionViewLayout {

override func prepare() {
super.prepare()
}

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
return attributes
}

}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×