ObjC++ 中的 lambda 和 block
Sep 15, 2022
lambda 表达式是 C++ 11 中增加的特性,和 ObjC 中的 block 很相似,都是匿名函数。 两者语法很相似: auto lambda = [] { }; lambda(); auto block = ^ { }; block(); 不同点 1: lambda 内部不能直接使用外部变量,…
NSValue 、结构体与 objc_boxable
Sep 15, 2022
clang 的扩展属性 objc_boxable 支持把结构体声明为可打包,这样结构体就可以使用打包语法转换为 NSValue 类型。 本质上是语法糖。 举个例子: typedef struct __attribute__((objc_boxable)) CBox { double x, y, z; } CBox; NSValue *box = @(CBox{ 12.34,…
ARC 与 AutoreleasePool
Aug 27, 2022
Objective-C 中的 ARC 与 AutoreleasePool Objective-C 中的对象在引用计数为 0 的时候就会被释放,为了解决手动管理引用计数(MRC)容易发生内存泄漏或者过度释放的问题,引入了自动引用计…