我有一个带有此代码的类,平均每分钟调用几次,并且只在主线程上运行:
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数据浏览器(在线),果然,只有第一个对象被保存(立即)!其余的从未露面。
为什么后续调用的块(+++)没有运行?为什么不保存其他对象?
答案 0 :(得分:1)
好的,修好了......
[PFObject saveAllInBackground:@[eventObj, self.adminConsole] block:^(BOOL succeeded, NSError *error) {
我认为这是因为有一个循环引用:self.adminConsole为eventObj添加了一个引用,eventObj为self.adminConsole添加了一个引用。无论出于何种原因,如果我直接在对象上使用saveInBackground,那就会破坏Parse。