我知道@class是假设加快编译时间,但如果我有这样的情况:这两个会产生相同的编译时间吗?
#import <Foundation/Foundation.h>
@class BNRItem;
@interface BNRItemStore : NSObject
@end
#import "BNRItemStore.h"
#import "BNRItem.h"
@implementation BNRItemStore
@end
我能做到这一点,而不是仍然会得到相同的编译时间:
#import <Foundation/Foundation.h>
#import "BNRItem.h"
@interface BNRItemStore : NSObject
@end
#import "BNRItemStore.h"
@implementation BNRItemStore
@end
'@ class'不是为了加快编译时间,而是为类设置前向声明。在你的例子中,似乎不需要'BNRItem'的前向声明。你可以使用#import# – rckoenes 2012-08-15 14:04:42
@rckoenes不知道你在做什么 - 当用作替代不必要的'#import' /'#include'时,前向声明** do **加快了编译时间,减少依赖性。对于小型项目来说没有太大的区别,但可以在非常大的项目上节省数小时(每天)。或者从另一个角度来看 - 典型的增量版本可能是中型项目的秒数与分钟数。因为每个objc实例都是一个指针,所以如果结构化和维护正确,那么可以在大型项目上实现非常快的编译时间,因为它们之间的依赖性较低。 – justin 2012-08-15 14:37:25
确实如此,但'@ class'并不只是为了加速代码,并且在大多数情况下它不是必需的。但是你说的是正确的,可以加快速度,但如果没有看到任何改进,LLVM也是如此。但它修复了一些项目中的一些圆圈引用。(这不应该在那里,但这是另一回事) – rckoenes 2012-08-15 14:50:24