gpt4 book ai didi

objective-c - 我可以通过仅在一个集合中更改存储在两个集合中的对象来更新该对象吗?

转载 作者:行者123 更新时间:2023-12-03 16:32:52 25 4
gpt4 key购买 nike

如果我有这样的东西:

SomeObject *obj = [[SomeObject alloc] init];
obj.someIvar = 100;

NSMuteableArray *arr = [[NSMutableArray alloc] initWithCapacity:10];
[arr addObject:obj];

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:50];
[dict setValue:obj forKey:@"key"];

[obj release];

我可以像这样更新 obj 吗:

SomeObject *objFromDict = [dict objectForKey:@"key"];
objFromDict.someIvar = 5200;

...并期望 arr 中的对象也被更新?我假设集合正在存储和发出指针。

最佳答案

是的,你说得对。

NSMuteableArray *arrNSMutableDictionary *dict将存储对对象 SomeObject *obj 的引用。当您调用[dict objectForKey:@"key"];时您会在表达式 objFromDict.someIvar = 5200; 中获得此引用您正在修改property someIvar .

当您尝试从arr获取相同的对象时someIvar 的值由于数组和字典仅存储对实例的引用,因此也会发生更改。

关于objective-c - 我可以通过仅在一个集合中更改存储在两个集合中的对象来更新该对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com