Cocoa 如何在NSMutableArray中仅包含对对象的引用?

Cocoa 如何在NSMutableArray中仅包含对对象的引用?,cocoa,nsarray,Cocoa,Nsarray,假设我们有一个NSMutableArray(或NSMutableDictionary),其中包含来自同一类型“Class1”的数据 我想创建一个新的NSMutableArray(或NSMutableDictionary),其中只包含前一个数组的一半数据 我想要的是在我创建的第二个可变对象中,只引用已经存在的对象,而不是“复制”它们 例如,如果我更改第一个可变对象中某个对象的某个属性值,以立即在第二个可变对象中进行更改 例如: 假设我有一个名为Person的NSMutableArray类型的对象,

假设我们有一个NSMutableArray(或NSMutableDictionary),其中包含来自同一类型“Class1”的数据

我想创建一个新的NSMutableArray(或NSMutableDictionary),其中只包含前一个数组的一半数据

我想要的是在我创建的第二个可变对象中,只引用已经存在的对象,而不是“复制”它们

例如,如果我更改第一个可变对象中某个对象的某个属性值,以立即在第二个可变对象中进行更改

例如:

假设我有一个名为Person的NSMutableArray类型的对象,Person类中有3个属性:

  • 名字
  • 性别
现在我想让我的第二个NSMutableArray(women)只包含来自people的“女性”Person对象。我在people对象中更改了一个女人的名字,然后当我打印women对象中的所有对象时,她的名字应该用我刚刚在people对象中更改的新数据打印出来


如果两个数组中的名称都是“XXX”,那么当我将第一个数组中的名称改为“YYY”并打印出第二个数组中的值时,应该是“XXX”,现在应该是“YYY”。

这就是所有
NSMutableArray
对象的工作方式。ObjC在将对象放入集合时很少复制对象(字典的键是主要的例外)。

这就是它的工作原理。你有什么问题?显然没有我来自.NET。作为IBOutlets的属性如何?
IBOutlets
是一个空的装饰,用于让界面生成器知道您希望能够连接到哪些内容(请参见
nsnibdesclarations.h
uinibdesclarations.h
)。它对代码没有编译时或运行时的影响。也就是说,我想不出哪种情况下会有一个
NSMutableArray
,它也是一个
IBOutlet
。我已经使用NSDictionary很多年了,不知道它会复制密钥,很好,我想我只为它们使用过短NSString