Swift

Swift:原因判明→対策導入→効果確認済み

Save/Recoverの問題の原因が判明したので、対策を入れました。

調査にまるまる一週間近くかかってしまいました。足かけ2週間。

原因はWebViewが非同期に読み込まれるためでした。saveしたWebViewが実際のものとは異なることにより、当然、次にリカバリで読み込んだら意図したwebページとはことなります。

ロジックは正しいのですが、読み込んだ.webarchiveがWebViewに反映される前に次の読み込みが行われ、最終的に、元々のWebViewがすべてのページにsaveされてしまうのです。

しかも、画面では、見かけ上、saveがOKで、recoveryが問題に見えてしまうため、思いのほか、時間を取られてしまいました。トレースしても、mainFrameURLは意図したもので表示されます。

mainFrameTitleが意図したものと異なることがわかったとき、この問題の原因をようやく把握できました。

修正して動くようになったので、このあと、再々確認をした上でチューニングしていきます。

ただし、一点きになる点があるので、それも調査します。.webarchiveファイルを書き込んだとき。すでにWebViewが変わっていたのではないかという点です。これは、トレースで何回も追いかけて問題がないことを確認したのですが、それでも、どうしても気になります。

Categories: Swift, 技術