デリゲートによって作成された 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を使用しています。