当我的应用程序恢复正常工作(用户回到应用程序)时,我会收听并在发生这种情况时触发同步:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"App resumed...");
//Fire a sync
[[PPDropbox shared] sync];
}
我在此事件发生后发生了一些崩溃报告,并试图同步说:
Fatal Exception: DBException
DBException: SHUTDOWN: sqlite_util.cpp:208: SqliteConnectionBase has been closed {-[DBDatastore sync:]}
我的sync
方法目前看起来像这样:
-(void)sync
{
if(self.datastore){
[self.datastore sync:nil];
}
}
我同步时是否应该进行某种检查以确保SQLite连接仍然可用?
Dropbox数据存储区3.1.1版,iOS 8.1
答案 0 :(得分:1)
我在我的应用程序中遇到同样的问题。 我的方案是这样的:我取消链接帐户并关闭数据存储区。 然后我尝试再次链接Dropbox。
我的单例实例在- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
方法中尝试同步,然后崩溃时出现问题中提到的相同错误。
我的问题是当我尝试同步时数据存储已经关闭(我只在singleton是init时才设置数据存储区。)
所以我所做的只是在调用同步之前设置数据存储区
self.datastore = [[DBDatastoreManager sharedManager] openDefaultDatastore:nil];
答案 1 :(得分:0)
我推测您的问题并不是因为您已经失去了与SQLite的连接,而是存在其他一些破坏使用SQLLite的内存的问题。
您在测试和调试方面有多复杂?尝试启用Guard Malloc,并使用assert验证方法的参数(如果你有一个指针允许它是NULL?)。
我关于断言的文章可能有所帮助:assert() is the Documentation that Keeps on Testing