应用程序恢复后iOS Dropbox数据存储区崩溃

时间:2014-12-18 06:05:29

标签: ios dropbox-api

当我的应用程序恢复正常工作(用户回到应用程序)时,我会收听并在发生这种情况时触发同步:

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

2 个答案:

答案 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