iphone - 这两个会生成相同的编译时间吗?

标签 iphone objective-c class

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

最佳答案

(假设您实际上在这些文件中的某个位置使用了 BNRItem)

对于 BNRItemStore.m 来说是一样的,但它可能会增加 #import BNRItemStore.h 的任何内容的编译时间和重新编译频率 - 因为许多需要查看 BNRItemStore 的类通常不需要同时查看 BNRItem@interface

随着该模式扩展到项目中的许多 header ,对一个 header 的简单编辑可能需要重新编译一大组文件,其中包含大量包含文件。它还会传播到索引器,索引器根据变化不断建立索引。

最好使用前向声明,除非您的项目很小(并将保持)。

能够在 .m 中声明所有实例变量/属性实际上非常好——因为这是对 clang 的一个相当新的补充。抽象和构建时间可以显着缩短。

关于iphone - 这两个会生成相同的编译时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970673/

相关文章:

iphone - 我应该为每个服务器请求验证用户密码吗?

iphone - 创建适用于 ipad 和 iphones 的动态 list 文件

ios - swift 重复链式动画

ios - NSXMLParser 代码的 EXC_BAD_ACCESS

excel - VBA 对象数据在集合中被覆盖

ios - 是否可以调整 UIButton 的 titleLabel 的 x,y 位置?

ios - UICollectionView reloadData 看起来很慢/滞后(不是即时的)

ios - 文本中只允许 2 个空格

actionscript-3 - Flex 4 两个类在一个文件中

python - 如何在 Python 中获取类引用的具体名称(例如 "<module_name>"."<class_name">)?