【发布时间】:2016-02-26 02:49:54
【问题描述】:
我有一个函数sync,它会定期运行,以同步所有未同步的 Realm 模型(我在我的应用程序内部使用这个 sync 标志,只是为了检查我是否已经处理了模型)。
我使用 NSLock 作为保护,因为sync 可能会同时运行多次。
我遇到了一个问题,有时相同的模型会被多次处理。 我想知道我的代码中是否有任何问题,我该如何解决(我认为这可能是由于 realm.io 可能是异步的)。
@property (strong, nonatomic) NSLock *lock;
- (void)sync
{
if (![self.lock tryLock]) return;
RLMResults *models = [Model objectsWhere:@"sync = 0"];
for (Model *model in models) {
[realm beginWriteTransaction];
model.sync = 1; // 1 step - Required to run the function.
[realm commitWriteTransaction];
[self myFunc]; // 2 step.
[self.lock unlock];
}
- (void)myFunc
{
NSLog(@"Updating view controller."):
}
【问题讨论】:
标签: objective-c realm