为什么saveInBackgroundWithBlock只在我的Parse启用类中工作*一次?

时间:2015-06-08 15:08:42

标签: ios objective-c parse-platform

我有一个带有此代码的类,平均每分钟调用几次,并且只在主线程上运行:

        PFObject* eventObj = [PFObject objectWithClassName:@"AdminConsoleEvent"];
        eventObj[kACParseEventName] = event;
        eventObj[kACParseEventUrgency] = urgency;
        if( param1 )
            eventObj[kACParseEventParam1] = param1;
        eventObj[kACParseEventPointerToAdminConsole] = self.adminConsole;
        === [eventObj saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
           +++ if( !succeeded ) {
                //here
            }
        }];

如果我在===处设置断点,我会看到每次eventObj都是我期望的...一个非零的对象,其中包含有效信息。

如果我在+++中设置断点,那么我看到它只被命中一次 - 这是第一次调用此代码。如果我查看Parse数据浏览器(在线),果然,只有第一个对象被保存(立即)!其余的从未露面。

为什么后续调用的块(+++)没有运行?为什么不保存其他对象?

1 个答案:

答案 0 :(得分:1)

好的,修好了......

[PFObject saveAllInBackground:@[eventObj, self.adminConsole] block:^(BOOL succeeded, NSError *error) {

我认为这是因为有一个循环引用:self.adminConsole为eventObj添加了一个引用,eventObj为self.adminConsole添加了一个引用。无论出于何种原因,如果我直接在对象上使用saveInBackground,那就会破坏Parse。