实际上可以在块中执行以下操作。我不确定释放一个超出块范围的对象是否正常?在下面的示例中,venObject和newPoll是内部块范围之外的对象。
[query findObjectsInBackgroundWithBlock:^(NSArray * objects, NSError * error){
PFObject * venObject;
if (!error){
venObject = [[PFObject alloc] initWithClassName:@"Venue"];
[venObject setObject:self.venue.identification forKey:@"fid"];
}
PFObject * newPoll = [[PFObject alloc] initWithClassName:@"Poll"];
[newPoll saveInBackgroundWithBlock:^(BOOL succeeded, NSError * error){
if (succeeded){
[venObject release]; //is this fine?
[newPoll release]; //is this fine?
}
}];
}
答案 0 :(得分:0)
是的,尽管我发现autorelease
你创建它们的同一范围内的对象更清晰,但它应该有效。
此外,您的代码有很多错误。如果error
不是nil
,venObject
将是一个可以指向任何位置的未初始化指针。稍后在该指针上调用release
可能会导致崩溃。如果保存失败,则不释放对象,从而造成内存泄漏。