設計しくった(鬱

 Beta2 で PDFLib のラッパーを作っていたのですが、やっちゃった。
 PDFLibLite は C の関数群でシーケンシャルなアクセスを行う順次作業型のライブラリなんですが、それをマネージド型に再構成する段階で、削除処理とのタイミングに不整合が出るようになっちゃった(´・ω・`)

 具体的には頁の管理なんですが、PDF の Book から新規に頁を作成し、その頁をオブジェクト化すると、ガベージ・コレクタによる回収前に新規ページ生成が実行される可能性が・・・。
 delete と finalizer は定義していても、参照型を明示的に削除することはあまりないでしょうから、GC によるファイナライズをオブジェクトが待機している段階で、新規ページ生成が実行されてしまう可能性があります。そうすると、PDFLib の方でエラーが出てしまうわけです。

 これを回避するためには、基本的にPDFに対する操作は、太ったPDFオブジェクトに対する操作群的な設計をするしかないわけで、なかなかスマートにはならないですねぇ。
 ページ・オブジェクトは参照型として操作したいでしょうから、結局はページ型というのは、ブック型の保持するカレントページに対する操作であり、ページ自身のライフサイクルはブックが管理しなければならないのでしょう。

 作り直すの、('A`)メンドクセ