1

当用户可以随时选择启用或禁用同步时,处理同步的最佳方法是什么?

具体来说,我目前遇到的问题是 Simperium 在其实例被释放后崩溃。考虑以下场景:

  1. 创建数据库并插入一些对象
  2. 创建 Simperium 实例,登录并同步所有离线创建的对象
  3. 注销(意味着释放 Simperium 实例)
  4. 创建更多对象

应用程序现在崩溃:

-[__NSCFString objectsShouldSync]: unrecognized selector sent to instance

其中 __NSCFString 是一些已经被释放的旧对象

我正在使用当前的主分支。

4

2 回答 2

0

这是一个常见的请求,“iosupdate”分支有一些会有所帮助的更改。您可以查看此 GitHub 问题以获得一些指导。总结一下(引用这个问题的作者):

初始化 simperium 实例时,设置以下属性:

self.simperium.authenticationOptional = YES;

这会出现一个取消按钮。

self.simperium.authenticationEnabled = NO;

这可以防止弹出身份验证对话框。

self.simperium.loginViewControllerClass = [LoginViewController 类]; 这会放入 SPLoginViewController 的自定义子类中以覆盖 cancel: 消息,否则您将不会收到用户取消对话框的反馈。

当用户点击“登录”按钮时,我设置

self.simperium.authenticationEnabled = YES;

这会导致登录控制器出现。

于 2012-08-21T01:37:55.603 回答
0

我知道这是一个老问题,但我花了很长时间尝试这个并且在任何地方都找不到任何指针,所以......

上面的答案是正确的,但我在设置后发现

self.simperium.authenticationEnabled = YES;

我需要添加

[self.simperium authenticateIfNecessary];

让登录视图出现。

于 2014-04-17T14:44:48.373 回答