ios – 每次运行都需要MobileServiceSQLiteStore.DefineTable,如果是这样,为什么呢?

我正在尝试使用我的移动应用程序改进后续登录(第一次登录后)的应用程序启动性能,并且在进行一些秒表诊断后,我可以看到使用MobileServiceSQLiteStore.DefineTable定义我的8个表< T>平均需要2.5秒.每次.

在运行iOS 7的iPhone 4上,如果不是每次都必须定义这些表,则加载时间将小于一秒.我希望它们只需要在安装SQLite数据库时定义应用程序的第一次运行.我已经尝试删除后续登录中的定义并尝试获取同步表,但它失败并显示“表未定义”.

所以,这似乎是预期的行为.你能解释为什么每次都需要定义它们和/或是否有任何解决方法?考虑到我的手机现在很老了,它可以忽略不计……但如果可能的话,它仍然是我想删除的东西.

最佳答案 是的,每次都需要调用它,因为如果您通过非类型化接口(即IMobileServiceSyncTable而不是IMobileServiceSyncTable< T>)读取数据,SDK会使用它来了解如何反序列化数据.

截至目前,没有任何工作可以避免每次都调用它.然而,我很惊讶你花了2.5秒,因为DefineTable没有做任何数据库操作.它只检查你的类型/ JObject上的成员,并维护一个内存字典供以后重用.

我建议你下载并编译SDK并调试你的方式来确定实际花费的时间.

点赞