Лучшее, что вы можете сделать, это написать обертку Obj-C вокруг CGPDFDocumentRef и выпустить CGPDFDocumentRef для метода dealloc вашей обертки, чтобы остальная часть вашего кода сохранила / освободила вашу обертку, как с любым другим производным NSObject и после того, как обертка число записей достигает нуля, CGPDFDocumentRef будет освобожден в методе оберток оболочки и, следовательно, будет освобожден из памяти, так как счет хранения никогда не будет превышать 1.