具体的には、カプセル化のために、次のようなアクセサーを使用したいと思います。
- (CGPDFPageRef)pageCreate {
// Assume url exists and is valid
NSURL *url = [self url];
CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((__bridge CFURLRef)url);
CGPDFPageRef result = CGPDFDocumentGetPage(document,1);
CGPDFPageRetain(result);
CGPDFDocumentRelease(document);
return result;
}
メソッドを使用している人は、ページが保持されていることを知っており (したがって、少し誤解を招く可能性がありますが、メソッド名に create という単語を入れています)、使用が終了したら解放する必要があると想定しています。
問題は...ドキュメントをリリースしたのでページは有効でしょうか、それともリリースされたものにアクセスしようとしているのでしょうか?