为什么当我调用 `-copy` 时我的 NSImage 的名称 属性 没有被复制?

Why isn't the name property of my NSImage being copied when I call `-copy`?

我有一个 NSArray ("objects"),其中包含 NSImage

类型的对象

我发现当我尝试复制数组中的每个图像时,NSImage 上的 name 属性 没有被复制。

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

这是我上面断点处的变量视图截图^^

name 属性 怎么可能没有被复制?

图像上的名称用作一种特殊的注册机制,因此您以后可以按名称查找图像。因此,每个名称只能有一张图像。如果您更改图像上的名称,则原始注册将被删除并添加新注册。如果图像已具有您尝试设置的名称,则设置将被拒绝。

实际上,您看到的是尝试针对不同的图像重新注册图像名称。该图像可能是一个副本,因此您可能认为保留名称很好,但您不知道私有实现是什么,也没有考虑潜在的可变子类。

因此,您不能在多个不同的图像中共享名称。如果您想做类似的事情,那么您需要使用自定义方案/方法单独管理名称/标识符。