Objective-C类别表现

ma1*_*w28 4 performance design-patterns objective-c code-organization objective-c-category

如果我使用类别将我的Objective-C类的实现分解为多个@implementation块,是否会使我的iOS应用程序的结果二进制文件变大或影响性能?

显然,您无法在运行时获取类的详细信息?.那么,假设所有其他的相等,那么结果二进制文件是否应该与类别相同?

背景

我有一个UIViewController相当复杂的自定义子类.

iOS开发人员库:使用Objective-C编程:类别

除了向现有类添加方法之外,您还可以使用类别在多个源代码文件中拆分复杂类的实现.例如,如果几何计算,颜色和渐变等特别复杂,您可以将自定义用户界面元素的绘图代码放在单独的文件中以实现其余部分.

关于类别的另一个好处(例如与#pragma marks 相比)是Xcode允许您对整个@implementation块进行代码折叠(但不是两个代码之间的代码#pragma mark).如果要将类别(可选地折叠)保留在与主类相同的文件中,这将非常有用.

Gre*_*ker 9

链接器尽可能合并类和类别.如果您的类及其类别在构建时都链接到同一个可执行文件,则成本为零.