Не удалось понять, что журнал сбоев частично перенаправляет запрос на закрытие # 1 - PullRequest
0 голосов
/ 18 сентября 2018

Я получаю следующий сбой с помощью приложения Hockey

Thread 0 Crashed:
0   App                         0x000000010302e7f8 partial apply forwarder for closure #1 (__C.UIImage?, [Swift.AnyHashable : Any]?) -> () in static App.ImageLoader.image(from: __C.PHAsset, size: __C_Synthesized.CGSize, success: (__C.UIImage) -> ()) -> () (PhotoLibraryImageLoader.swift:28)
1   App                         0x000000010302d958 reabstraction thunk helper from @escaping @callee_guaranteed (@owned __C.UIImage?, @owned [Swift.AnyHashable : Any]?) -> () to @escaping @callee_unowned @convention(block) (@unowned __C.UIImage?, @unowned __C.NSDictionary?) -> () (PhotoLibraryImageLoader.swift:0)
2   Photos                               0x00000001917c89cc __84-[PHImageManager requestImageForAsset:targetSize:contentMode:options:resultHandler:]_block_invoke.1505 + 816

В PhotoLibraryImageLoader.swift

static func image(from assest:PHAsset,size:CGSize,success:@escaping (_ image:UIImage) -> Void) {
        let option = PHImageRequestOptions()
        option.isSynchronous = false
        option.deliveryMode = .highQualityFormat
        PHImageManager.default().requestImage(for: assest, targetSize: size, contentMode: .aspectFill, options: option) { (image, attributes) in
            success(image!) // Crash line  PhotoLibraryImageLoader.swift:28
        }
 }

Если существует проблема для необязательного (image!) журнала сбоя, он должен отличаться (что-то вроде неожиданно найденного nil ..)

Здесь Что означает частичное применение форвардера для закрытия

Кто-нибудь может помочь мне получить представление об этом?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Изображение, которое недоступно, вызывает сбой (их необходимо загрузить с сервера)

, чтобы сделать это, добавьте одну строку к опции

    option.isNetworkAccessAllowed = true

Надеюсь, это кому-нибудь пригодится

0 голосов
/ 18 сентября 2018

Я полагаю, что крах произошел из-за сильной ссылки. Вы вызываете какой-либо освобожденный объект в блоке завершения?

При необходимости используйте следующую проверку в обработчике завершения.

if let wSelf = self {
    println("i have image now")
    // do what you want with the image/self
}
...