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()

它在真实设备上崩溃,但在模拟器中没有。事实证明,我只需要清理项目并重建。 不要误报 ;)