iOS Swift : EXC_BAD_ACCESS(code=EXC_i386_GPFLT ) 关于单例
iOS Swift : EXC_BAD_ACCESS(code=EXC_i386_GPFLT ) regarding a singleton
我的 iOS 应用程序返回此错误。
EXC_BAD_ACCESS(code=EXC_i386_GPFLT )
这发生在 return Singleton.instance
这是关于我正在使用的单例的代码。
class var sharedData : SharedData {
struct Singleton {
static let instance = SharedData()
}
return Singleton.instance
}
有人可以帮我理解这个错误并帮我解决吗?如有任何建议或提示,我们将不胜感激。
您可以将所有代码替换为以下内容:
static let sharedData = SharedData()
有了 Swift 1.2,现在有一个更简单的选项来创建单例:
class DataManager {
static let sharedInstance = DataManager()
/// To deny direct access, make your init function private if you want
private init() {
}
}
我的 Swift 单例 class 中有一个命名错误的函数,它在调用时一定会触发 ARC。这个 class 从一个文件初始化另一个 class,所以我得到了这个签名:
func initOtherClass(otherClass: NSObject, URL fileURL: NSURL) -> Bool
哎呀。将名称从 init
更改为 initialize
解决了 EXC_BAD_ACCESS
错误。我希望这有助于节省其他人一些时间。
正如上面其他人提到的那样,我使用的是单例,
static let sharedData = SharedData()
它在真实设备上崩溃,但在模拟器中没有。事实证明,我只需要清理项目并重建。
不要误报 ;)
我的 iOS 应用程序返回此错误。
EXC_BAD_ACCESS(code=EXC_i386_GPFLT )
这发生在 return Singleton.instance
这是关于我正在使用的单例的代码。
class var sharedData : SharedData {
struct Singleton {
static let instance = SharedData()
}
return Singleton.instance
}
有人可以帮我理解这个错误并帮我解决吗?如有任何建议或提示,我们将不胜感激。
您可以将所有代码替换为以下内容:
static let sharedData = SharedData()
有了 Swift 1.2,现在有一个更简单的选项来创建单例:
class DataManager {
static let sharedInstance = DataManager()
/// To deny direct access, make your init function private if you want
private init() {
}
}
我的 Swift 单例 class 中有一个命名错误的函数,它在调用时一定会触发 ARC。这个 class 从一个文件初始化另一个 class,所以我得到了这个签名:
func initOtherClass(otherClass: NSObject, URL fileURL: NSURL) -> Bool
哎呀。将名称从 init
更改为 initialize
解决了 EXC_BAD_ACCESS
错误。我希望这有助于节省其他人一些时间。
正如上面其他人提到的那样,我使用的是单例,
static let sharedData = SharedData()
它在真实设备上崩溃,但在模拟器中没有。事实证明,我只需要清理项目并重建。 不要误报 ;)