我正在开发针对iPad的应用。该应用程序不是特别大或复杂。
每当我运行应用程序时,它都会在一分钟内构建(即使在Clean之后)。每当我尝试分析应用程序时,它会在仪器出现前大约12分钟构建。大部分时间Xcode显示Building 139 of 139 files
。
该应用程序具有一些图像资源,使用Core Data,使用五个第三方“库”(包含在源代码文件中)。
为什么构建Profile需要这么长时间?如何让Xcode构建更快?
修改
大部分时间花在两个字符串上,如下所示
CompileC ***.m normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler
以灰色显示在构建日志中。
答案 0 :(得分:1)
最后,我找到了原因。
我的应用程序中有三个派生自NSManagedObject
的类,这些类各有约200个属性。
由于数据来自Web服务,因此这些类包含一些代码:
- (void) fillFrom:(NSDictionary*)dict
{
self.id = [dict valueForKey:KEYS[0]];
self.jobUid = [dict valueForKey:KEYS[1]];
self.manufacturer = [dict valueForKey:KEYS[2]];
self.model = [dict valueForKey:KEYS[3]];
...
}
显然,我可以做得更好,但当时代码如上所述。每个属性的一个任务。一种方法中约有200项任务。
原因:
KEYS
是一个定义。
#define KEYS @[ @"ID", @"JID", ... ]
基本上,200个作业不仅仅是作业。在幕后也会创建一个大型自动释放字符串数组的副本。
我将定义更改为
NSString* KEYS[] = { @"ID", @"JID", ..., nil };
然后改编了一些其他使用KEYS和瞧的代码,配置文件构建几乎和普通的调试一样快。
不幸的是,我无法准备一个小的测试项目来发布,但希望我的经验对其他人有用。