之前用Xcode貌似正常。最近出问题了:打开Xcode的项目后,Xcode时不时的在建立索引,然后CPU占用率极高。或者是,编译build的时候,CPU占用率也是非常高。基本上都是100%多:
同时,伴随着问题:
Xcode无法调转到代码定义
Command+鼠标点击函数,结果
显示蓝色下划线,但是无法跳转到代码定义
而有时候,代码被正常解析后,是可以正常跳转代码的。
好像问题可以说是:
Xcode中,代码indexing,建立索引,失败,或者说是时间很长,经常无法正常建立索引,代码无法正常高亮显示
xcode cpu over 100
貌似是建立索引的问题 indexing太慢
Xcode 8.3.3 indexing too slow
ios – XCode 8.0 Swift 3.0 slow indexing and building – Stack Overflow
去加上:
Editor > Add Build Setting > Add User-Defined Setting
刚刚遇到个问题,发现Add User-Defined Setting是灰色的
现在突然又好了:
然后输入:
SWIFT_WHOLE_MODULE_OPTIMIZATION 和 YES
然后去看看效果。
先去再次完全clean一下:
再去等一会,等Xcode去indexing,看看是否能很快建立索引,代码高亮
好像真的是:
之前估计要N多分钟的indexing,现在很快就可以了。
然后代码跳转也正常了:
Xcode 8 Editing very slow | Apple Developer Forums
ios – Xcode 8.3 Indexing & Building Extremely Slow – Stack Overflow
说是:
Xcode 9中解决了该问题,但是会使用swift 4
如果不想要用swift 4,xcode 9中也是可以继续用swift 3的。
然后xcode 9中包含了一个新的编译系统,(速度更快?)
需要手动给当前项目设置一下,才能启用。
【总结】
总之就是Xcode 8.3.3 + swift 3,有bug,导致建立代码的索引indexing极其的慢,Xcode占用CPU长期保持超过100%,由于一直没建好索引,所以代码高亮也就不工作,代码都是白色的,不能正常代码高亮
解决办法:
去:
Editor > Add Build Setting > Add User-Defined Setting
添加:
SWIFT_WHOLE_MODULE_OPTIMIZATION = YES
即可:
大幅度降低,还原到正常的,Xcode建立索引的时间很短,CPU占用率也不是很高,代码高亮很快就起效果了。
【后记】
但是,貌似还是不够理想,至少是:
1.indexing还是有时候会慢,然后代码高亮和跳转还是不够及时
2.build的速度还会导致CPU占用率极高
ios – Extremely long compilation times with Swift in Xcode – Stack Overflow
去看了看,此处已经是:
了:
Optimization Level = ‘Fast, Whole Module Optimization’
还是去安装:
RobertGummesson/BuildTimeAnalyzer-for-Xcode: Build Time Analyzer for Swift
看看效果:
结果出错:
-》但是:
算了,放弃这个插件。即使花时间改掉这些错误,估计也未必能用,因为作者说了只是针对于Xcode 7的插件的。
然后再去看看:
“Empty your derived data and build.”
去搜:
Xcode project Empty your derived data
xcode8 – How to delete derived data in Xcode 8? – Stack Overflow
然后删除掉项目对应文件夹:
SRT-cfccwgbddwbjoqbfrtcfvclnuykq
即可。
然后再去看看build和indexing速度如何。
还是不行。
Xcode 8 build index slow
Xcode8 build index slow
ios – XCode 8 very slow swift compiling – Stack Overflow
结果此处的Swift Compiler – Custom Flags,里没法add:
后来才注意到:
要把Basic改为All,才能看到:Other Swift Flags
然后clean后再去重新build
看到了一堆警告:
但是无助于此处彻底解决Xcode编译慢,耗CPU资源多的问题。
swift – Xcode 8 does full project rebuild – Stack Overflow
去试试:
HEADERMAP_USES_VFS = YES
然后看看效果
Xcode8 index slow
现在也发现了,切换文件时,就会导致Xcode去全局编译,而不是增量编译
然后CPU占用率奇高
Xcode8 index too slow
ios – XCode 8 keeps freezing at startup when loading index – Stack Overflow
xcode swift indexing forever – Stack Overflow
Xcode8 build too slow
xcode – Swift 3 Compile Time Incredibly Slow – Stack Overflow
然后实在无语了,还是无法彻底解决。
然后去试试:
【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢
【总结】
最终通过下载和安装Xcode9
(并且伴随着解决了一系列的Carthage引用的第三方库的重新更新和编译,然后项目才能正常引用第三方库)
项目的索引indexing和build编译,就正常了,很快。
解决了之前的:index和build都极其慢的,CPU和资源占用率都极高。
【后记】
后来发现:
【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢
也没有彻底解决问题。
所以去:
把之前添加到参数,从Xcode9中去掉:
【已解决】Xcode9中删除Build Settings的User-Defined中的参数设置
删除了:
SWIFT_WHOLE_MODULE_OPTIMIZATION
再去删除:
Other Swift Flags中的-Xfrontend -warn-long-function-bodies=200
再去删除:
HEADERMAP_USES_VFS = YES
然后结果:
貌似建立索引很流畅,CPU都没怎么占用,就建立好了??
重启Xcode再去试试
结果离开开始Indexing
CPU占用了200%多
后来更狠,接近300%
总之,感觉和Xcode8之前一样的慢和占用资源多。
xcode 9 full project rebuild
问题还是无法解决。
算了,还是加上:
(1)Editor > Add Build Setting > Add User-Defined Setting
<code>SWIFT_WHOLE_MODULE_OPTIMIZATION=YES </code>
(2)
<code>HEADERMAP_USES_VFS = YES </code>
(3)Other Swift Flags中的
<code>-Xfrontend -warn-long-function-bodies=500 </code>
这样至少能部分缓解当前的问题。