OC的数组中添加 nil 对象会有什么问题

OC的数组中添加 nil 对象会有什么问题,第1张

当OC的可变数组(NSMutableArray)添加 nil 对象时,首先会d出警告 “Null passed to a callee that requires a non-null argument”,也就是说数组不能传递非空参数。

提示信息如下:

运行后会崩溃,崩溃信息如下:

当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出的内容就是待创建的对象。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11633150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存