【问题标题】: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 错误。我希望这有助于为其他人节省一些时间。

        【讨论】:

          猜你喜欢
          • 2015-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-10
          • 2014-09-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多