//Mutable object...
//first initialize
NSMutablearray *arr=[[NSMutableArray alloc]init];
//then add value
[arr addobjects:@"iPhone",@"Android",nil];
//But we can assign value immutable array without initialize
NSArray *[email protected][@"iPhone",@"Android"];
1
A
回答
3
有很多方法来初始化NSMutableArray
。例如:
NSMutableArray *arr = [NSMutableArray arrayWithObjects: @"iPhone", @"Android", nil];
的@[]
文字语法是一个相当新的除了ObjC,并返回一个NSArray
(非可变),这就是为什么你不能直接给它分配给NSMutableArray
。它只是[NSArray arrayWithObjects:count:]
的语法糖。如果你想使用这种语法,你仍然可以:
NSArray *brr = [@[@"iPhone",@"Android"] mutableCopy];
+1
重要的是要注意,除了语法糖之外,还有**不可改变的值的直接赋值**。语法只是动态方法调用的简写;至于编译器输出的内容,简写和方法调用形式之间没有区别。 – bbum
1
这只是字面语法的方式。在Objective-C中,它创建了NSArray
。如果你真的想使用的语法,但有一个可变的数组结束了,你可以使用复制这样的:
NSMutableArray *[email protected][@"iPhone",@"Android"].mutableCopy;
该系统是在雨燕,在那里它被称为Array
只是一个价值型好得多,你设定的可变性与无论是var
或let
var myArray = ["iPhone", "Android"] // mutable
let myArray = ["iPhone", "Android"] // immutable
1
你反对两个步骤:
//first initialize
NSMutableArray *arr=[[NSMutableArray alloc]init];
//then add value
[arr addobjects:@"iPhone",@"Android",nil];
你说你会而写文字阵列:
NSArray *[email protected][@"iPhone",@"Android"];
所以将它们结合起来:
NSMutableArray* arr = [NSMutableArray arrayWithArray: @[@"iPhone",@"Android"]];
0
因为字面的类型是不可改变的。另外,你应该记得NSMutableArray是NSArray的一个子类。您可以将子类的实例分配给其超类,但不能以其他方式分配。
相关问题
- 1. 需要初始化对象
- 2. 错误:可变大小的对象可能未被初始化。但为什么?
- 3. 可变大小的对象可能不被初始化
- 4. 为什么不可变的对象抛出UnboundLocalError但可变的对象不?
- 5. 为什么需要那么泛型类型键入reasure虽然我们可以使用对象POJO的
- 6. 对象中的NSMutableDictionary和NSMutableArray对象
- 7. 实例化不可变配对对象
- 8. 对象变量初始化
- 9. 为什么不可变对象需要双指针?
- 10. 为什么初始值会改变而不是对象值?
- 11. 对象初始化可以简化
- 12. NSMutableArray的NSMutableArray。变异的方法发送到不可变对象
- 13. 为什么我的不可变对象突变Scala
- 14. 什么是“错误:可变大小的对象可能未被初始化”?
- 15. 对象正在初始化为不需要的值
- 16. 可变大小的对象数组可能无法初始化
- 17. 可变大小的对象可能未初始化 - C错误
- 18. 错误:可变大小的对象可能未初始化|
- 19. 错误:可变大小的对象可能未被初始化?
- 20. 为什么我们需要user_agent_alias和机械化对象?
- 21. 为什么他们说在Proto-type Pattern中 - 只要需要新的对象就可以复制原始对象?
- 22. 序列化和不可变的对象
- 23. xCode 4.6对象分配和初始化
- 24. 不可变类型的对象初始化语法
- 25. Java保证不可变对象的初始化安全吗?
- 26. 可变对象和不可变对象之间的区别
- 27. 如何初始化nsmutablearray中的对象?
- 28. 是否可以在初始化后改变select2对象?
- 29. 中的NSMutableDictionary对象突然变得空
- 30. 为什么可以改变最终对象的值?
您能否缩短您的头衔并添加相关信息以及您在问题主体中遇到的问题? – Christoph