提示信息如下:
运行后会崩溃,崩溃信息如下:
当OC的不可变数组(NSArray)字面量方法添加nil对象时,会报错“Collection element of type 'void *' is not an Objective-C object”
报错界面如下:
当用arrayWithObjects/initWithObjects时,末尾都会有个nil,因为数组元素不确定,因此要加nil,同时此时的nil也是数组结束的标识符
当这种写法的时候 NSArray *array = [NSArray arrayWithObjects:@"1",@"2",nil,@"3"]会提示“Missing sentinel in method dispatch”,也就是提示缺少nil来结束数组
当fix后会变成如下,但是数组array是以第一个nil结束的,也就是说3并不是数组中的元素
Array未赋值前就是NULL如arr=new Array()
此时arr就是null
如已赋值可以用
splice
如下:
var arr=new Array(1,2,3,4)
arr.splice(0,arr.length)//删除arr[]中的所有splice方法splice(2,1)删除arr[3]
if(arr[3]==null){alert("为空")}//判断是否为空
splice方法的使用:
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
参数
arrayObj
必选项。一个 Array 对象。
start
必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
deleteCount
必选项。要移除的元素的个数。
item1, item2,. . .,itemN
必选项。要在所移除元素的位置上插入的新元素。
推荐有一下几种方式:1.对象字面量创建对象
var
obj
=
{
a:1,b:2
}
注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。
2.通过new运算符创建对象
var
obj
=
new
object()
//创建空对象
var
ary
=
new
array()
//创建空的数组对象
注意:new运算符后面跟的是一个函数调用,这个函数被称为构造函数。js中原始类型都包含内置的构造函数,也可以自己定义构造函数。
3.通过立即执行函数创建对象
var
obj
=
(function(){
return
{x:1,y:2}}())
注意:在立即执行函数内部一定要有return语句,return出的内容就是待创建的对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)