20

写真へのアクセス許可が付与されておらず、許可を求めたオブジェクトの割り当てが解除されようとしている場合、アプリがクラッシュします。

Apple のサンプル コード (Photos フレームワーク用) もクラッシュします。

私のアプリは、次のスタック トレースでクラッシュします。

*** キャッチされない例外 'NSObjectInaccessibleException' が原因でアプリを終了しています。理由: 'このアプリケーションは写真データへのアクセスを許可されていません。'


*** 最初のスロー コール スタック:
(
    0 CoreFoundation 0x000000010a324f65 __exceptionPreprocess + 165
    1 libobjc.A.dylib 0x000000010c030deb objc_exception_throw + 48
    2 PhotoLibraryServices 0x000000011c1f7e2d -[PLPhotoLibrary initWithTransientContext:name:] + 1183
    3 写真 0x000000011bd6a445 __30-[PHPhotoLibrary photoLibrary]_block_invoke + 59
    4 libdispatch.dylib 0x0000000110f5e49b _dispatch_client_callout + 8
    5 libdispatch.dylib 0x0000000110f49e28dispatch_once_f + 543
    6 写真 0x000000011bd6a404 -[PHPhotoLibrary photoLibrary] + 140
    7 写真 0x000000011bd3e5e8 -[PHCoreImageManager _cancelAndFlushPreheatItemsForAssets:CPLPrefetching:domain:operation:passingTestHandler:didCancelHandler:] + 174
    8 写真 0x000000011bd5900c -[PHImageManager dealloc] + 176
    9 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    10 MyApp 0x000000010f271812 _TToFC12MyApp16PhotosDataSourceE + 66
    11 libobjc.A.dylib 0x000000010c02f7bb _ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 127
    12 libobjc.A.dylib 0x000000010c03a390 objc_destructInstance + 93
    13 libobjc.A.dylib 0x000000010c03a3c3 object_dispose + 22
    14 MyApp 0x000000010f271796 _TFC12MyApp16PhotosDataSourceD + 198
    15 MyApp 0x000000010f2717c2 _TToFC12MyApp16PhotosDataSourceD + 34
    16 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    17 MyApp 0x000000010f2668f2 _TToFC12MyApp25PhotoPickerViewControllerE + 178
    18 libobjc.A.dylib 0x000000010c02f7bb _ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 127
    19 libobjc.A.dylib 0x000000010c03a390 objc_destructInstance + 93
    20 libobjc.A.dylib 0x000000010c03a3c3 object_dispose + 22
    21 UIKit 0x000000010adb54b9 - [UIResponder dealloc] + 130
    22 UIKit 0x000000010ad40721 -[UIViewController 解除] + 1949
    23 UIKit 0x000000010ad1c97b -[UIPresentationController.cxx_destruct] + 262
    24 libobjc.A.dylib 0x000000010c02f7bb_ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 127
    25 libobjc.A.dylib 0x000000010c03a390 objc_destructInstance + 93
    26 libobjc.A.dylib 0x000000010c03a3c3 object_dispose + 22
    27 UIKit 0x000000010ad185db -[UIPresentationController dealloc] + 56
    28 UIKit 0x000000010b4a9046 -[_UIFullscreenPresentationController dealloc] + 56
    29 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    30 UIKit 0x000000010ad1838c __destroy_helper_block_411 + 24
    31 libsystem_blocks.dylib 0x0000000110fdb6b1_Block_release + 128
    32 UIKit 0x000000010b568d9c -[_UIViewControllerTransitionContext.cxx_destruct] + 94
    33 libobjc.A.dylib 0x000000010c02f7bb_ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 127
    34 libobjc.A.dylib 0x000000010c03a390 objc_destructInstance + 93
    35 libobjc.A.dylib 0x000000010c03a3c3 object_dispose + 22
    36 UIKit 0x000000010b567825 -[_UIViewControllerTransitionContext dealloc] + 56
    37 UIKit 0x000000010b568e51 -[_UIViewControllerOneToOneTransitionContext dealloc] + 79
    38 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    39 マイアプリ 0x000000010d4818d2 block_destroy_helper + 66
    40 MyApp 0x000000010d481988 _TPA__TFFC16MyApp31CustomShrinkAnimator17animateTransitionFS0_FPSo36UIViewControllerContextTransitioning_T_U0_FSbT_ + 152
    41 マイアプリ 0x000000010d481a28 _TPA__TTRXFo_dSb_dT__XFo_iSb_iT__ + 120
    42 MyApp 0x000000010d481aed block_destroy_helper8 + 13
    43 libsystem_blocks.dylib 0x0000000110fdb6b1_Block_release + 128
    44 UIKit 0x000000010ac5ee47 -[UIViewAnimationBlockDelegate .cxx_destruct] + 43
    45 libobjc.A.dylib 0x000000010c02f7bb _ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 127
    46 libobjc.A.dylib 0x000000010c03a390 objc_destructInstance + 93
    47 libobjc.A.dylib 0x000000010c03a3c3 object_dispose + 22
    48 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    49 CoreFoundation 0x000000010a228d4d -[__NSDictionaryI dealloc] + 141
    50 libobjc.A.dylib 0x000000010c044afe_ZN11objc_object17sidetable_releaseEb + 232
    51 libobjc.A.dylib 0x000000010c0450b8 _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 488
    52 CoreFoundation 0x000000010a2129c6 _CFAutoreleasePoolPop + 22
    53 CoreFoundation 0x000000010a246941 __CFRunLoopRun + 2081
    54 CoreFoundation 0x000000010a245e98 CFRunLoopRunSpecific + 488
    55 GraphicsServices 0x0000000112598ad2 GSEventRunModal + 161
    56 UIKit 0x000000010abb8676 UIApplicationMain + 171
    57 マイアプリ 0x00000001082b470d メイン + 109
    58 libdyld.dylib 0x0000000110f9392d 開始 + 1
    59??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: タイプ NSException のキャッチされない例外で終了します

任意のポインタは本当に高く評価されます.

4

5 に答える 5

9

私も同じ経験をしました。ただし、これを再現するには、ビュー コントローラーを終了して割り当てを解除するだけでは十分ではなく、シミュレーターでメモリ警告をシミュレートする必要がありました。これによりクラッシュが発生しました。

したがって、私の解決策は、PHImageManager をグローバル変数として使用するのではなく、必要に応じてアクセスすることでした。これの代わりに:

private let imageManager = PHImageManager.defaultManager()
...
imageManager.requestImageForAsset(....)

必要なときに私はこれが好きでした:

PHImageManager.defaultManager().requestImageForAsset(....)
于 2016-09-22T09:53:39.730 に答える