我想將CALayer
的內容設置爲圖像。 CALayer
有一個contents
屬性該屬性的文檔說,「圖層可以將此屬性設置爲CGImageRef以將圖像顯示爲其內容。」但屬性取id
所以在Xcode中,我得到了以下問題:如何將CALayer的內容設置爲CGImageRef?
分配給「ID」語義問題:不兼容的指針 類型從 「CGImageRef」(又名「結構CGImage *」)
如何將CGImageRef
分配給contents
屬性,只需要id
?我在這裏錯過了什麼?
我想將CALayer
的內容設置爲圖像。 CALayer
有一個contents
屬性該屬性的文檔說,「圖層可以將此屬性設置爲CGImageRef以將圖像顯示爲其內容。」但屬性取id
所以在Xcode中,我得到了以下問題:如何將CALayer的內容設置爲CGImageRef?
分配給「ID」語義問題:不兼容的指針 類型從 「CGImageRef」(又名「結構CGImage *」)
如何將CGImageRef
分配給contents
屬性,只需要id
?我在這裏錯過了什麼?
明確鑄造CGImageRef
至id
應該修復警告。例如,
CGImageRef imageRef;
...
layer.contents = (id) imageRef;
應該工作正常。
賓果。但我不完全明白爲什麼。 'CGImageRef'不是'NSObject',因此不能被表示爲'id' ...對嗎?這個演員中究竟發生了什麼? – 2011-03-28 06:52:36
@SimonCave在'運行時不需要任何費用。實際上,編譯後的二進制文件甚至可以在使用或不使用轉換時看起來相同關鍵是文檔告訴我們我們可以將'CGImageRef'設置爲'contents',所以我們只是盲目地相信它。如果根據文檔的內容是內容的唯一有效類型,那麼內部實現可能實際上只是將其轉換回'CGImageRef'。 – tia 2012-04-27 03:04:20