类别何时生效

时间:2011-09-29 09:06:07

标签: objective-c ios categories

我对类别有些困惑。如果我为ClassA编写了一个名为ClassA + Something的类别,该类别在什么时候生效?我假设某个地方的单个导入会导致该类别在整个项目中应用于ClassA,但是应该在哪里放置这个导入?

3 个答案:

答案 0 :(得分:1)

如果类别的源文件是构建的一部分,它将在main()运行之前生效,无论该类别的标头是否导入到其他文件中。导入标题的唯一区别是,您可以调用类别的方法(在任何导入它的文件中),而不会生成编译器警告。

答案 1 :(得分:0)

我发现在我的项目的预编译头文件(.pch)中导入类别最容易。

这样,我的所有类都可以创建编译器警告。

答案 2 :(得分:0)

实际上链接器负责添加类别..如果向链接器标记添加-all_load,则可以确保加载所有类别(所有子库中的+类别)以及所有类。如果在某处包含标题,链接器将添加类别。如果你有一个复杂的库树层次结构(我曾经用facebook +一些其他lib取决于SBJson的类别)-all_load是你解决疯狂运行时错误的方法