1. ホーム
  2. ios

[解決済み] UIImagePickerController使用時のiOS 10エラー[アクセス]<private>について

2023-01-08 20:50:32

質問

XCode 8を使用し、iOS 10.2 Betaでテストしています。

プロジェクトにPhotos、PhotosUI、MobileCoreServicesのフレームワークを追加しました。

非常にシンプルなコードです。

#import <Photos/Photos.h>
#import <PhotosUI/PhotosUI.h>
#import <MobileCoreServices/MobileCoreServices.h>

@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHLivePhotoViewDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *imageview;

@end

と実施します。

- (IBAction)grab:(UIButton *)sender{
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    picker.allowsEditing = NO;
    picker.delegate = self;

    // make sure we include Live Photos (otherwise we'll only get UIImages)
    NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
    picker.mediaTypes = mediaTypes;

    // bring up the picker
    [self presentViewController:picker animated:YES completion:nil];
}

ボタンをタップした途端、非常に無駄なエラーが出てアプリが落ちてしまいます。

[access] <private>

これだけです。他には何もありません。

break文を使うと、"presentViewController"でアプリがクラッシュするようです。

これは真新しいアプリで、グラブボタン以外のUIには何もありません。

また、iOS 9.3 でテストしたところ、これは問題なく動作しました。iOS 10 で変更されるかもしれない何かを見逃しているのでしょうか?

どのように解決するのですか?

NSPhotoLibraryUsageDescriptionをplistに記述する必要があるかもしれません。 例えば

<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) uses photos</string>

すべての使用法の記述を確認する ここで .