我正在从Parse.com检索数据,并尝试将包含此数据的图像添加到数组中。但是,某些代码没有任何明显的原因没有被执行。这是代码:未在iOS中执行的代码的特定部分
PFQuery *userQuery = [PFUser query];
[userQuery whereKey:@"objectId" containedIn:[self.event objectForKey:@"members"]];
[userQuery findObjectsInBackgroundWithBlock:^(NSArray *users, NSError *error) {
if (!error) {
self.membersArray = [NSMutableArray arrayWithArray:users];
[self.tableView reloadData];
for (PFUser *user in self.membersArray) {
[self.memberPhotosArray addObject:[NSNull null]];
NSInteger index = [self.memberPhotosArray indexOfObject:user];
PFFile *photoFile = [user objectForKey:@"profilePicture"];
[photoFile getDataInBackgroundWithBlock:^(NSData *result, NSError *error) {
if (!error) {
NSLog(@"Before creating image");
UIImage *image = [UIImage imageWithData:result];
[self.memberPhotosArray[index] addObject:image];
NSLog(@"After creating image");
[self.tableView reloadData];
}
}];
}
}
}];
第一个日志正在执行,该行后面的所有内容都没有被调用。有人可以解释为什么并提供解决方案吗?
你没有看到崩溃吗?如果调用[self.memberPhotosArray [index] addObject:image]时图像为零;它会炸毁。另外,我可能是错的,但是你可能会在这个块中保持自我。 – Dare
我不擅长编码,但我使用ARC,所以它不应该自己做所有的保留/释放? – Strikecounter2
保留周期是一个循环,对象相互保持对方。如果任一对象被释放: 对象A不会被释放,因为对象B持有对它的引用。 但是只要对象A有一个引用,对象B就永远不会被释放。 但是对象A永远不会被释放,因为对象B持有对它的引用。 ad infinitum – Dare