OS Xアプリケーション用の印刷可能な矩形を取得しようとしています。セッションの作成、ページフォーマットの確認、フォーマットの検証などが行われます。コードはコンパイルされますが、PMCreateSessionから-50のステータスが取得されます。 printSessionが正しくないと宣言していますか?通常、UnsafeMutablePointersでそれほど多くのことを処理する必要はありません。PMCreateSessionが印刷セッションを作成していません
ありがとうございます!
let printSession: UnsafeMutablePointer<PMPrintSession> = nil
let pmPageFormat: UnsafeMutablePointer<PMPageFormat> = nil
var status = PMCreateSession(printSession)
status = PMCreatePageFormat(pmPageFormat)
status = PMSessionDefaultPageFormat(printSession.memory, pmPageFormat.memory)
let changed: UnsafeMutablePointer<DarwinBoolean> = nil
status = PMSessionValidatePageFormat(printSession.memory, pmPageFormat.memory, changed)
changed.destroy()
var pRect = PMRect()
status = PMGetAdjustedPageRect(pmPageFormat.memory, &pRect)
Swift.print("pRect \(pRect)")
status = PMRelease(pmPageFormat)
status = PMRelease(printSession)
ポインタを割り当てるときに効果的です。たとえば、let printSession = UnsafeMutablePointer .alloc(1)printSession、pmPageFormat、およびchangedが宣言され、そのように割り当てられ、実際には合理的なrect(0、0、734、576)が得られます。しかし、まだPMReleaseの呼び出しでクラッシュして、なぜそのことがわかりません。 –
JKaz
今のところ、PMRelease(printSession)(および他のPMRelease)をprintSession.destroy()およびprintSession.dealloc(1)に置き換えてください。明白な有害な影響はありませんが、それが正しいことなのか、なぜPMReleaseがクラッシュするのかは不明です。 – JKaz