2016-02-28 51 views
0

我很新的目標C和遵循我發現的一些指示,但此刻我卡住了。NSBitmapImageRep加載圖像

我試圖用下面的代碼加載一張圖片:

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

「文件名」是一個有效的指針。但編譯器告訴我:

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

我在想什麼或做錯了什麼?

+0

是什麼樣的圖像呢? 'filename'可能是一個有效的NSString對象,但是你確定它指向了正確的文件? –

+0

鮑里斯·維雷布斯基解決了我的問題。我不知道在Objective-C中做明確的類型轉換:) – Rolf

回答

0

imageRepWithContentsOfFile:是一種工廠方法。根據文檔,它返回「NSImageRep子類的初始化實例,如果圖像數據無法讀取,則返回nil。」來自NSImageRep.h:「如果發送給子類,那麼僅僅爲了該子類所理解的類型。」所以,你只需要投結果指定類型:

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

注意,通常你並不需要自己創建NSBitmapImageRep實例,並且可以使用NSImage

+0

非常感謝,解決了我的問題。正如我以前寫過的:我對客觀C非常陌生,並沒有意識到這種鑄造問題。 – Rolf

+0

不客氣。請接受我的回答然後:) –