-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