今作ってるiPadのPDFリーダ。バカでかいPDFにannotationを書き込むと、UIがロックする。
しかしiOS標準のPDFDocumentはスレッドセーフじゃないそうで、メインスレッド以外で触るのは危ない、そうな。別スレッドでセーブする実装にしてしばらくいじってたらほんとにPDFが壊れたw
こんなのいったいどうやって解決すればいいんじゃ、ってClaudeに相談するも軽減策しかなくて、解決策が出てこない…。コピーしたファイルに書き込むなら、それは別インスタンスだからいいんだけど、そのコピーしたファイルをまた書き戻すところで同じことになる…
あ! コピーしたファイルを表示用に使って、別スレッドで時々アノテーションを元ファイルに書けばいいじゃん!!!と思いついた。Claudeには「発想の転換ですね!」って褒められる。
いまんとこ、うまくいってる。書き込み時、使うメモリが表示用と合わせてPDF2個分…と思ったが、思ったほど食わないのが不思議。