【问题标题】:iOS Swift : EXC_BAD_ACCESS(code=EXC_i386_GPFLT ) regarding a singletoniOS Swift:关于单例的 EXC_BAD_ACCESS(code=EXC_i386_GPFLT)
【发布时间】:2018-04-04 20:29:08
【问题描述】:
我的 iOS 应用返回此错误。
EXC_BAD_ACCESS(code=EXC_i386_GPFLT)
这发生在return Singleton.instance 这是关于我正在使用的单例的代码。
class var sharedData : SharedData {
struct Singleton {
static let instance = SharedData()
}
return Singleton.instance
}
谁能帮我理解这个错误并帮助我解决它?任何建议或提示都表示赞赏。
【问题讨论】:
标签:
ios
objective-c
swift
singleton
【解决方案1】:
我使用的是上面其他人提到的单例,
static let sharedData = SharedData()
它在真实设备上崩溃,但在模拟器中却没有。事实证明,我只需要清理项目并重建。
不要误报;)
【解决方案2】:
现在使用 Swift 1.2 可以更轻松地创建单例:
class DataManager {
static let sharedInstance = DataManager()
/// To deny direct access, make your init function private if you want
private init() {
}
}
【解决方案3】:
您可以将所有代码替换为以下内容:
static let sharedData = SharedData()
【解决方案4】:
我的 Swift 单例类中有一个命名错误的函数,当它被调用时,它一定是 ARC 出错了。这个类从一个文件中初始化另一个类,所以我最终得到了这个签名:
func initOtherClass(otherClass: NSObject, URL fileURL: NSURL) -> Bool
哎呀。将名称从 init 更改为 initialize 解决了 EXC_BAD_ACCESS 错误。我希望这有助于为其他人节省一些时间。