自从我更新到最新的Xcode版本11.0(11A420a)以来,调试非常缓慢且麻烦。
编辑:更新到11.1 GM(11A1027)之后,问题仍然相同。
编译项目并在模拟器或设备上运行它没有问题。但是,到达断点时,Xcode或多或少变得不可用:
我在具有3.2 GHz i7和32 GB内存的Mac mini 2018上运行Xcode。我之前在同一台计算机上使用过Xcode 10,没有任何问题。
搜索“ Xcode慢”会带来大量线程,当然还有可能的解决方案。从我作为iOS开发人员的那几年开始,我知道Xcode从来不是最快和稳定的程序。但是,它从来没有像现在这样糟糕过。
不幸的是,所有的窍门(重启Xcode或Mac,清理项目,清理Xcode库文件夹等)均无效,
因此,最大的问题是:
这是Xcode 11中的已知问题吗?有没有已知的解决方案?
自从我升级到Xcode 11和Swift 5.1以来,我遇到了一个奇怪的问题-实例化了一个可选变量后,它在Xcode调试器中仍然显示为nil!
我有一个可选的类变量,称为booking:
var booking: Booking?
Run Code Online (Sandbox Code Playgroud)
类型Booking:
public struct Booking: Codable {
var id: Int?
var start_time: Date?
var payment_currency: String = "USD"
var payment_amount: Int?
}
Run Code Online (Sandbox Code Playgroud)
当我单步执行代码时,可以booking在分配代码之前看到它……这太好了:
然后在分配之后...什么,还是零??:
我想知道是否以某种方式将其视为惰性变量。但这并不是零,因为可以访问它:
搜索了一会儿之后,我想知道我在Xcode中的构建模式是否没有设置其“调试可执行文件”标志。但是确实如此。我什至清理并重新构建了该项目,并确定了该标志。
无论booking是在变量视图中查看还是p booking在控制台视图中输入,它都显示为nil。
这里发生了什么?我需要在升级之前调试的可预测性。
更新
我总结了一种重现此问题的简单方法。首先,创建一个空的单视图项目并将其添加到AppDelegate.swift的顶部:
public struct Booking: Codable {
var start_time: Date?
var payment_currency: String = "USD"
}
Run Code Online (Sandbox Code Playgroud)
然后将这些行添加到应用程序(_:didFinishLaunchingWithOptions :) func:
booking = Booking()
print("booking.payment_currency = \(booking?.payment_currency ?? "NULL")")
Run Code Online (Sandbox Code Playgroud)
如之前和在运行时一样设置断点,请注意,即使在分配调试器后,调试器也将预订显示为nil,就像我原来的情况一样。
然后注释掉的start_time变量,重新运行,并注意现在调试器显示booking被分配有后的值,正如人们所期望的那样。
因此,看起来像这样的结构中的Date变量(可选或不可选)使调试变得混乱。特别是Date变量-将变量更改为其他类型,例如Int,Int?,String,String?...,没有问题。 …