-1
我有以下的碰撞与sharedInstance
return Static.instance!
行:什么会引起EXC_BREAKPOINT上斯威夫特sharedInstance回报
EXC_BREAKPOINT 0x0000000100da42d8
事故发生在特设发布版本里没有调试断点。 根据调用栈崩溃sharedInstance
应该已经存在的崩溃时(它是第一次调用应用程序启动时,碰撞发生在按钮水龙头)。
崩溃发生在iPad 2的空气与iOS 8.4.0,建立与雨燕2.1的编译器在Xcode 7.1.1
应用程序本身(在启动呼叫sharedInstance)编制和数据源类都位于不同的模块。难道是从类的框架与DataSource类静态结构是不同的?
@objc public final class DataSource : NSObject
{
public class var sharedInstance: DataSource
{
struct Static
{
static var instance: DataSource?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token)
{() -> Void in
Static.instance = DataSource()
}
return Static.instance!
}
override init()
{
super.init()
...
}
...
}
谢谢,但我能提供的语法是崩溃的原因是什么?而且,用你的语法,这不是懒惰的实例化,它可能导致不同的行为。 – DisableR
该属性是懒惰地实例化,从文档:*存储类型属性懒惰初始化他们的第一次访问*。是的,你的语法可能会导致崩溃,我猜 – vadian
该语法来自Swift 0. *那里,所以现在我想这个问题是完全与新的Swift方法单身过度同步。将看看如果新的崩溃到达:) – DisableR