我的代表创建的 ALAsset 的所有权存在问题。我的委托是一个模态视图,当它被解除时,它返回一个 ALAsset,但资产需要比委托长。
在委托回调中,我只需将 ALAsset 放在一个 NSMutableArray 中,该数组由我的应用程序的控制单例拥有[OrderManager sharedOrderManager]
-(void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingPictureWithAsset:(ALAsset *)asset
{
[[[[OrderManager sharedOrderManager] currentOrder] assets] addObject:asset];
}
后来,(在委托被解雇后)我使用数组中的资产构建了一个表格视图
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Photos View Cell Identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIButton *imageButton;
imageButton = (UIButton *)[cell.contentView viewWithTag:kImageButton_TAG];
ALAsset *imageAsset = [[[[OrderManager sharedOrderManager] currentOrder] assets] objectAtIndex:indexPath.section];
[imageButton setImage:[UIImage imageWithCGImage:[asset aspectRatioThumbnail]] forState:UIControlStateNormal];
return cell;
}
当然,由于委托不再存在,并且委托是资产的所有者,*imageAsset
现在是一个 nil 指针。我的问题是,如何让我的表格视图控制器或我sharedOrderManager
的 ALAsset 的所有者?
编辑:为了澄清,我正在使用 ARC。