我知道@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