2015-11-16 23 views
2

我有一個包含NSImage當我調用`-copy`時,爲什麼我的NSImage的name屬性沒有被複制?

類型的對象的NSArray(「對象」)我發現,當我試圖讓每個圖像的陣列中的一個副本,在name財產上的NSImage沒有得到複製。

for (NSObject* object in objects) 
    { 
     NSMenuItem* menuItem = nil; 
     if ([object isKindOfClass:[NSImage class]]) 
     { 
     NSImage* image = [object copy]; 
     //Breakpoint here 

這裏是在斷點處我的變量視圖的屏幕截圖上面^^

enter image description here

怎麼可能是該name屬性不會被複制?

回答

2

圖像上的名稱被用作特殊的註冊機制,因此您可以稍後通過名稱查看圖像。因此,您只能使用每個名稱的圖像。如果您更改圖像上的名稱,則會刪除原始註冊並添加新註冊。如果圖像已經有你想要設置的名字,那麼這個設置就會被拒絕。

實際上,您所看到的是嘗試將圖像名稱重新註冊爲不同的圖像。這個圖像可能是一個副本,所以你可能認爲保留這個名字是可以的,但是你不知道私有實現是什麼,你也沒有考慮潛在的可變子類。

因此,您不能在多個不同的圖像上共享名稱。如果你想做類似的事情,那麼你需要使用自定義方案/方法分別管理名稱/標識符。

+0

沒有意識到名稱必須是唯一的。謝謝! –

相關問題