相关疑难解决方法(0)

如何处理大型Swift项目?

在我用Swift编写的iPhone应用程序变得非常大(> 150 .swift文件+各种Objective-C库)后,Xcode开始表现得非常糟糕:

  • 每一次编译我都会遇到各种错误,例如:

    Command failed due to signal: Segmentation fault: 11

  • 编辑需要花费大量时间(MacBook Pro Retina上> 2分钟)
  • 等等.

我只是想知道每个人是否都有同样的问题,也许有人找到了减少这种噩梦的方法?

到目前为止我做了什么 - 我将项目拆分为几个动态框架,我从主项目链接,它有助于减少编译时间,但引入一些新问题.

我还使用iRamDisk将DerivedData文件夹保存在RAM中并定期从中删除所有文件,它有时会导致SourceKit崩溃.

xcode compilation ios swift

53
推荐指数
1
解决办法
7683
查看次数

Xcode 8执行完整的项目重建

将Swift + ObjC项目更新到Xcode 8(Swift 2.3)后,我发现50%或更多的时间Xcode完全重建项目而不是增量构建.

所做的更改是添加简单的打印语句.似乎没有关于何时执行完全重建的逻辑.

它出现在"检查依赖关系"阶段,它决定了这一点.在Xcode 7上,这似乎不是问题.

有人遇到过这种情况么?

swift xcode8 xcode8-beta6

50
推荐指数
4
解决办法
1万
查看次数

Swift WHOLE_MODULE_OPTIMIZATION可以缩短编译时间,但会导致lldb/Xcode崩溃

TL; DR

之前

SWIFT_WHOLE_MODULE_OPTIMIZATION = NO

  • 调试编译需要10-15分钟
  • 发布编译需要25分钟以上
  • po 在LLDB中运作良好

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

  • 调试编译需要1-2分钟
  • 发布编译大约需要8分钟
  • po 总是导致Xcode崩溃

知道为什么基于这个信息的可怕编译时间,和/或为什么Xcode可能会崩溃?


DEETS

我正在开发一个大型的100%Swift项目(Objective-C中有第三方库,但我们所有的代码都是Swift).我们编译时间非常糟糕,编译调试配置通常需要大约10-15分钟,编译发布配置需要30多分钟.

由于可怕的编译时间,这个项目很难处理.我一直在寻找改善这一点的方法,特别是通过构建设置,几个月没有运气.我忽略了一件事SWIFT_WHOLE_MODULE_OPTIMIZATION,特别是因为任何提及它都会增加项目的编译时间.

所以前几天我们启用SWIFT_WHOLE_MODULE_OPTIMIZATION并且看到我们的编译时间提高了10倍.

问题是,现在每当我们调试项目并尝试使用po myObjectXcode 在lldb中打印对象时会立即崩溃.以下是崩溃日志中的一些信息:

进程:Xcode [5860]
路径:/Applications/Xcode.app/Contents/MacOS/Xcode
标识符:com.apple.dt.Xcode
版本:6.4(7720)
Build Info:IDEFrameworks-7720000000000000~8
App Item ID:497799835
App External ID:812725084
代码类型:X86-64(Native)
父进程:??? [1]
负责人:Xcode [5860]

日期/时间:2015-08-05 15:53:08.265 -0600
操作系统版本:Mac OS X 10.11(15A235d)
报告版本:11

自启动以来的时间清醒:13000秒

坠毁的线程:20

异常类型:EXC_BAD_ACCESS(SIGSEGV)
异常代码:KERN_INVALID_ADDRESS位于0x000000000000008f
异常注意:EXC_CORPSE_NOTIFY

VM区域接近0x8f: - > __TEXT 000000010ef62000-000000010ef63000 [4K] rx/rwx SM = COW /Applications/Xcode.app/Contents/MacOS/Xcode

特定于应用程序的信息:
ProductBuildVersion:6E35b

这是崩溃线程上的堆栈跟踪:

Thread 20 …
Run Code Online (Sandbox Code Playgroud)

crash xcode ios lldb swift

27
推荐指数
2
解决办法
7308
查看次数

Swift编译时间非常长

我喜欢Apple和他们做的事情,但是Swift...... 哦上帝!

我对`Swift`编译时有问题.

组态:

  • MacBook Pro(Retina,13英寸,2014年中)
  • 2,6 GHz Intel Core i5
  • 8 GB 1600 MHz DDR3
  • SSD 256(最高800 MB/s)
  • 1k课程
  • 10个豆荚

编译时间: 3分钟.

看起来像" 新的最好和惊人的快速,梦想"这种配置是不够的,它的工作原理Google Chrome-InfiniteLoop(find free memory - eat)


我尝试了各种方法来加快编译时间:

  • 设置HEADERMAP_USES_VFSYES(无变化)

在此输入图像描述

  • 设定Build Settings / Architectures / Build Active Architecture OnlyYES(一些改进)

在此输入图像描述

  • 设置defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4(8)(有时它变得更糟)

  • 设置优化级别-Onone(无重大改进)

在此输入图像描述

  • 设置调试信息格式 - DWARF而不是DWARF with dSYM File

在此输入图像描述

  • 禁用Find implicit dependencies您的计划(没有重大改进) …

time xcode compilation ios swift

19
推荐指数
2
解决办法
3331
查看次数

Xcode 11 重新编译太多

Xcode 11 正在重新编译(几乎?)我的整个项目,即使我只是更改本地私有变量,或更改本地范围内的常量值,有时甚至在本地私有函数范围内。我有时可以按预期通过快速构建获得 2 或 3 个更改,但很快它决定再次重新编译所有内容(这需要太长时间)。

任何想法可能会发生什么?Xcode 是否无法确定发生了什么变化,为什么要重新编译这么多其他东西(甚至其他模块)。

任何建议都非常感谢,谢谢!

xcode xcodebuild ios swift xcode11

13
推荐指数
2
解决办法
2054
查看次数

如何追踪慢速编译Swift代码?

Xcode添加了一个很棒的功能,可以实时查看您的应用程序编译,但是如何查看各个类的编译持续时间,然后进一步查看导致编译时间慢的代码?

很有帮助,但只能在那里找到一部分.

xcode compilation swift

7
推荐指数
1
解决办法
1172
查看次数

类型安全和类型推断有什么区别?

他们有什么不同?我有点困惑,因为它们似乎是类似的概念.

type-inference type-safety swift

7
推荐指数
1
解决办法
3672
查看次数

加快Xcode Swift构建时间

随着我的项目在过去一年中不断增长,其构建时间也在增长.在过去的几个月中,它从4分钟变为7分左右(时间包括GitHub拉动,单元测试等).

我已经调查过-Xfrontend -debug-time-function-bodies以找到编译速度慢的行,并更改了该代码.

我相信这是项目规模的问题; 182个Swift文件,≈31K行.23个故事板,52个XIB.这是一个常规的UIKit应用程序,具有少量的Cocoapods依赖项.

大部分构建时间花费在"编译Swift源文件"阶段.

我关心的构建机器时间比编辑 - 构建 - 调试周期要少,后者也一直在减速.

可以做些什么来改善构建时间?

xcode compile-time compiler-optimization swift

7
推荐指数
1
解决办法
4102
查看次数

Swift:unwrapping导致swift编译缓慢

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{

这行代码使swift编译速度极慢:

cell!.detailTextLabel.text = child.year! + " " + child.make! + " " + child.model!
Run Code Online (Sandbox Code Playgroud)

如果我有这行代码,那么构建项目需要1分44秒.99%的时间它坚持"编译Swift源文件".如果我将此行更改为

cell!.detailTextLabel.text = " "//child.year! + " " + child.make! + " " + child.model!
Run Code Online (Sandbox Code Playgroud)

构建项目只需要5或6秒.我想知道为什么这行代码会导致编译时间过长.

在我的Child模型中,它们被声明为:

var name:String?
var year:String?
var make:String?
var model:String?
Run Code Online (Sandbox Code Playgroud)

和init:

init(name:String!, ... ,year:String!, make:String!, model:String!, ...){
        self.name = name
       ...
        self.year = year
        self.make = make
        self.model = model
}
Run Code Online (Sandbox Code Playgroud)

我构建一个孩子的部分:

Child(name:cName,...,year:cYear,make:cMake, model:cModel,...)
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

6
推荐指数
1
解决办法
1594
查看次数

如何调试慢速Swift编译时间

我有一个Swift SpriteKit项目,包含大约25个小文件.编译这个项目的时间是30-45秒!它是纯粹的Swift,没有ObjC.

我在Report Navigator中观察了编译,试图找到一个花时间的文件.但是,它不是一个单独的文件.它始终是列表中的最后一个文件,似乎总是占用.但是这个文件在编译之间可能会有所不同,但仍然需要花费很多时间.

在最后一个文件之后的步骤是Merge xxx.swiftmodule,这很快就会发生,但是我不确定是否因为它在它可能相关的缓慢之后出现.

我搜索并尝试了各种方法来找到罪魁祸首.我看了这篇文章:为什么Swift编译时间这么慢?并尝试了这些方法.我使用CTRL-来完成了命令行构建,但是没有显示有关缓慢的任何有用信息.

我已经完成了我的项目,寻找类型推断可能会被绊倒的地方,但是没有找到太多(实际上,如果是这种情况,我希望单个文件成为罪魁祸首).

有没有人有任何其他建议来追踪这个?来自几乎立即编译的Objective-C项目,这让我发疯.

编辑我对此进行了更多的工作,包括构建输出的屏幕截图,注意到缓慢发生的位置.问题是,如果我在缓慢的文件中注释掉的代码,那么该文件之前,在列表中就变成了一个缓慢的(它被罚款之前).如果我将该代码注释掉,那么那之前的代码就会变慢,等等.

构建输出

compilation ios swift

5
推荐指数
2
解决办法
1926
查看次数

XCode 7.3.1挂起"复制swift标准库"

由于我已经更新到XCode 7.3.1,我无法运行我的项目,因为它挂起了"复制Swift标准库"步骤(来自IDE和命令行).如果我尝试打开项目配置文件或者创建一个新的Swift项目,它也会崩溃.

有谁知道为什么会这样?

我正在使用OSX 10.11.6在Mac mini(2012年末)上运行XCode


解决了
最后解决了重新安装XCode和SDK.
谢谢大家的答案.

xcode swift ios9

5
推荐指数
2
解决办法
5133
查看次数