LoginSignup
2
0

More than 5 years have passed since last update.

#WK: Unable to acquire assertion for process 0

Last updated at Posted at 2016-11-04

現象

SDWebImage と WKWebView を使ったアプリを iOS 10 上で動かして、画像をたくさん読み込むと以下のエラーが出て終了する。デバッガには落ちてくれない。

#WK: Unable to acquire assertion for process 0

メモリの問題かと思ったけど、didReceiveMemoryWarning は呼ばれない。

調査

エラーメッセージで検索したら次の2つが引っかかった。

WebKit のソースを読んでもよくわからない。BKSProcessAssertion とかいう内部クラスを使ってるし。でも、pid = 0 っておかしい気がする。
Stackoverflow の質問は、JavaScript と WebGL だから関係ない筈…。

対処

とりあえず SDImageCache の maxMemoryCountLimit を設定したら落ちなくなった。maxMemoryCost でもいいと思う。

SDImageCache.sharedImageCache().maxMemoryCountLimit = 100

考察 憶測

たぶん、iOS 10 では UIImage や WebKit が GPU をたくさん使うようになって、メインメモリではなく GPU のメモリを奪い合って落ちてるんだと思う。

追記

機種によっても症状は変わって、

  • iPhone 5 ... メモリ警告が出て、問題なく動く (GPU 使ってない?)
  • iPhone 5s, 6 ... 落ちる
  • iPhone 7 ... 問題なし (GPU に余裕がある?)

だったりします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0