iphone - 不可变对象(immutable对象)中的可变对象

标签 iphone objective-c cocoa-touch

在 NSDictionary 中包含 NSMutableArray 是否可以接受?或者 NSDictionary 也必须是可变的吗?

NSMutableArray 将在运行时添加值,NSDictionary 将始终具有相同的 2 个 NSMutableArray。

谢谢

最佳答案

是的,这是完全可以接受的。请记住,数组的内容是指向 NSMutableArrays 的指针——这些内容在不可变字典结构中无法更改。指针指向的内容可以改变你想要的一切。也就是说:

NSMutableArray *arr = [[NSMutableArray alloc] init];
NSDictionary *dict = [NSDictionary dictionaryWithObject:arr forKey:@"test"];

[arr addObject:@"Hello"];
NSString *str = [[dict objectForKey:@"test"] objectAtIndex:0];
NSLog("%@", str);

关于iphone - 不可变对象(immutable对象)中的可变对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/577728/

相关文章:

swift - Swift 中的 NSURLRequest 和 URLRequest 有什么区别?

ios - 具有自动布局问题的 Xcode 8 Vary Traits

iphone - 在 child 的-onExit方法中停止声音?

iphone - SQLite - 从表中检索经纬度集

ios - 使用标记符号访问 UILabel

cocoa-touch - 如何将NSValue保存到磁盘?

iphone - 如何覆盖 UISearchDisplayController searchResult TableView 中的 "no results"文本?

iphone - 如何在UIImagePicker中实现自定义 'Use'和 'Retake'按钮?

ios - UILabel 文本颜色不会以编程方式更改,如果我在 nib 中设置文本颜色并在 Assets 中定义该颜色

iPhone, "More than maximum 5 filtered album lists trying to register. This will fail."错误