0

私はObjective Cを初めて使用し、見つけたいくつかの指示に従いましたが、現時点では行き詰まりました。

次のコードで画像を読み込もうとしています:

NSBitmapImageRep *img;
img = [NSBitmapImageRep imageRepWithContentsOfFile:filename];

「filename」は有効なポインターです。しかし、コンパイラは私に言います:

Incompatible pointer types assigning to 'NSBitmapImageRep *' from 'NSImageRep * _Nullable' 

私は何が欠けているか、間違っていますか?

4

1 に答える 1

0

imageRepWithContentsOfFile:ファクトリーメソッドです。ドキュメントによると、「NSImageRep サブクラスの初期化されたインスタンス、または画像データを読み取れなかった場合は nil」を返します。From NSImageRep.h:「サブクラスに送信された場合、そのサブクラスが理解できる型に対してのみこれを行います。」. したがって、結果を指定された型にキャストするだけで済みます。

NSBitmapImageRep *imgRep = (NSBitmapImageRep *)[NSBitmapImageRep imageRepWithContentsOfFile:filename];

NSBitmapImageRep通常、自分でインスタンスを作成する必要はなく、 を使用できることに注意してくださいNSImage

于 2016-02-28T11:02:53.367 に答える