我已经阅读了几个地方,建议在头文件中使用像@class Something这样的声明,并只在.m文件中导入这些类以节省编译时间。@class与#import头文件编译时间节省与铿锵?
是否真的仍然是必要的,并且使用LLVM Clang编译速度更快,还是编译时优势只适用于像(旧版本)GCC这样的旧编译器?
我已经阅读了几个地方,建议在头文件中使用像@class Something这样的声明,并只在.m文件中导入这些类以节省编译时间。@class与#import头文件编译时间节省与铿锵?
是否真的仍然是必要的,并且使用LLVM Clang编译速度更快,还是编译时优势只适用于像(旧版本)GCC这样的旧编译器?
@Eimantas对于循环依赖关系是正确的。这也是为了表现。想象一下您将A.h
导入B.h
和B.h
导入C.m
的情况。现在,每次修改A.h
时,C.m
都会重新编译,即使C.m
可能不依赖于A.h
中的任何内容。使用@class
可以避免这种内部流失。叮当的举动并没有改变这一点。
请注意,这仅适用于您可以更改的标头。通常很好,并且首选将系统标题直接导入.h
文件。
一不留神,你可以得到圆形进口:
// A.h
#import "B.h"
// B.h
#import "A.h"
预处理器将包括B.h在A.H,这又包括A.H(因为B.h进口的话),这反过来又导入B.h再等循环往复。
@class
声明可以防止意外错误,因为由循环导入引起的错误实际上是非常不直观的(从个人经验和回溯/错误检查中发出)。
甜!不知道这一个。 – Eimantas