Swift

Swift:まずい!自動saveにバグ

webページをsaveしたあとに、リンクに触るとおかしくなることが判明。

推定:

  • webarchiveファイルからwebarchiveファイルはOK。
  • リンクに触るとおかしくなる。
  • popupのURLからwebページを表示させる場合もOK。
  • 現在のwebページのURLが何かで判定しないといけないみたい。

原因:

  • func webView(sender: WebView!, didStartProvisionalLoadForFrame frame: WebFrame!)  {に飛んできたとき、すでにWebViewは変更されている。
  • したがって、ここで.webarchiveを書き込むと表示中のwebページになってしまう。
  • つまり、リンクをクリックしたとき、.webarchiveをsaveするのは、不適切。
  • .webarchiveのtableViewがクリックされたときだけ、次のものを読み込む前に、その直前の処理が.webarchiveならば、saveする。つまり、didStartProvisionalLoadForFrameでは、リセットする。ここに飛んできた時点でWebViewは変更されている。

 

対策:

  • .webarchiveの自動saveは、継続的にwebarchiveを処理中のときのみとする。
  • 特に、URL読み込み直後には、自動saveを行わないこと。didStartProvisionalLoadForFrameでウォッチ。

Categories: Swift, 技術