gpt4 book ai didi

ios - EXC_BAD_ACCESS 到 Typhoon Singleton 引用

转载 作者:可可西里 更新时间:2023-11-01 01:39:36 25 4
gpt4 key购买 nike

我正在使用 Typhoon Framework 来集成我的所有核心组件。我正在处理我的数据层(使用 FMDB 而不是 Core Data)。我有一个 LocalDataStore 类,用于处理 SQLite 的数据读写。这是一个具有设置数据库的初始化方法的单例类。然后我有一个引用它的 PlayerDAO。

当我启动应用程序时,会创建 LocalDataStore 并调用初始化方法。然后它会创建 DAO 类,当它尝试访问 LocalDataStore 时,我收到 EXC_BAD_ACCESS 错误。

在启动方案中打开“启用僵尸对象”,我得到一个额外的错误:-[myapp.SQLiteLocalStore retain]: 发送到释放实例 0x1740ab5e0 的消息

以下是我在 Typhoon Assembly 中的设置方式:

dynamic func config() -> TyphoonDefinition {
return TyphoonDefinition.configDefinitionWithName("MyApp.plist")
}

dynamic func localStore() -> AnyObject {
return TyphoonDefinition.withClass(SQLiteLocalStore.self, configuration: {
(definition) in

definition.injectProperty("databaseName", with: TyphoonConfig("sqlite.filename"))

definition.performAfterInjections("initDatabase")
definition.scope = .Singleton
})
}

dynamic func playerDAO() -> AnyObject {
return TyphoonDefinition.withClass(SQLitePlayerDAO.self, configuration: {
(definition) in

definition.injectProperty("localStore", with: self.localStore())
})
}

查看错误发生时的断点,发生在TyphoonComponentFactory中的这一行:

- (id)newOrScopeCachedInstanceForDefinition:(TyphoonDefinition *)definition args:(TyphoonRuntimeArguments *)args {
...
instance = [pool objectForKey:poolKey]; // line 431
...
}

poolKey = @"localStore"

调试器说它当前正在初始化 playerDAO。该池只有“localStore”的1个键,值为_NSZombie_myApp.SQLiteLocalStore

知道哪里出了问题吗?

最佳答案

好吧,将 definition.scope = .Singleton 更改为 definition.scope = .LazySingleton 修复了它......在我的情况下,无论如何可能是更好的方法。

我仍然很好奇我是否做错了什么导致普通 Singleton 出现内存错误。

关于ios - EXC_BAD_ACCESS 到 Typhoon Singleton 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com