我有NSArray
("对象"),其中包含NSImage
类型的对象
我发现当我尝试复制数组中的每个图像时,name
上的NSImage
属性不会被复制。
for (NSObject* object in objects)
{
NSMenuItem* menuItem = nil;
if ([object isKindOfClass:[NSImage class]])
{
NSImage* image = [object copy];
//Breakpoint here
以下是^^
上方断点处的变量视图的屏幕截图 name
属性怎么可能没被复制?
答案 0 :(得分:2)
图像上的名称用作特殊注册机制,因此您可以稍后按名称查看图像。因此,每个名称只能有一个图像。如果更改图像上的名称,则会删除原始注册并添加新注册。如果图片已经具有您尝试设置的名称,则该图片会被拒绝。
有效地,您所看到的是尝试将图像名称重新注册到不同的图像。该图像可能是一个副本,因此您可能认为保留名称很好,但您不知道私有实现是什么,并且您也没有考虑潜在的可变子类。
因此,您无法在多个不同的图像中共享名称。如果您想要做类似的事情,那么您需要使用自定义方案/方法单独管理名称/标识符。