GNU C编译器指令__attribute__用于提供变量、函数等的属性,优化代码并提供注解。强符号和弱符号可共存,编译器根据规则选择符号。强引用和弱引用用于链接操作,弱引用可使用其他模块中定义的实体。弱符号和弱引用在库的实现中有用。
C编译器默认按自然对齐分配结构体空间:成员按自身类型长度对齐,必要时插入填充字节;结构体整体按最大成员对齐,末尾补齐。可用#pragma pack(n)指定对齐,成员和整体均取n与自身长度的较小值;当n不小于所有成员长度时该指令无效。还可用__attribute__((aligned(n)))或packed控制对齐。文中以多个结构体示例说明不同声明顺序及pack(2)下的sizeof结果。
本文讨论了如何在iOS 7中为NSString添加containsString:方法。虽然Apple在iOS 8中引入了该方法,但作者希望在iOS 7及以下版本中以最小侵入的方式实现。通过使用__attribute__((constructor)),可以确保在iOS 8及以上版本中不编译此代码,从而实现兼容性。
完成下面两步后,将自动完成登录并继续当前操作。