1. ホーム
  2. objective-c

[解決済み] インスタンスメッセージの受信型'CALayer'は前方宣言である」とはどういう意味か?

2022-09-24 21:37:30

質問

iOS4 プロジェクトから iOS5 にコードのブロックを移植しているのですが、ARC でいくつか問題があります。 コードは画面キャプチャから PDF を生成します。

PDF 生成コード

UIView *captureView;
...
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil);
UIGraphicsBeginPDFPage();
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();

renderInContextの行

[captureView.layer renderInContext:pdfContext];

は以下のようなエラーを発生させます。

Automatic Reference Counting issue
Receiver type 'CALayer' for instance message is a forward declaration

ここで何が起こっているのか、何か思い当たることはありますか?

どのように解決するのですか?

私はあなたの問題を複製することができました。これは、私のためにそれを修正しました。

QuartzCore.frameworkをプロジェクトに追加し、この行を.mファイルに追加してください。

#import <QuartzCore/QuartzCore.h>