为什么OBJ-C 一个数组没有实例化,可以调用addObject方法而不抛异常?

时间:2021-12-25 09:24:47
如下面的代码

NSMutableArray* arr ;
        [arr addObject:@"a"];
        
        NSLog(@"count %lu", arr.count);


定义了arr数组,但没有alloc, 更没有init,然后就直接addObject,没有异常,然后调用元素总数, count,返回0.

为什么obj-c这么诡异,为什么这样都不抛异常?
OBJ-C语言这样设定的原因是什么,因为大部分编程语言中,一个对象没有实例化而拿来用的话,通常是会抛异常。

4 个解决方案

#1


arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。

#2


引用 1 楼 pppppp11 的回复:
arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。


为什么是这样的程序语言设计呢?
其它常见的语言,都不可能有这样低级的设计。

#3


引用 2 楼 WDandan 的回复:
Quote: 引用 1 楼 pppppp11 的回复:

arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。


为什么是这样的程序语言设计呢?
其它常见的语言,都不可能有这样低级的设计。


有人知道吗?

#4


这是 object c的特性呀,除了苹果这家是这么干的,其它家都不是。

苹果自以为是的独立特行也不仅仅体现在这一点了

#1


arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。

#2


引用 1 楼 pppppp11 的回复:
arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。


为什么是这样的程序语言设计呢?
其它常见的语言,都不可能有这样低级的设计。

#3


引用 2 楼 WDandan 的回复:
Quote: 引用 1 楼 pppppp11 的回复:

arr没有实例化之前应该是nil吧,然而对nil进行任何操作,都不会报错。。。


为什么是这样的程序语言设计呢?
其它常见的语言,都不可能有这样低级的设计。


有人知道吗?

#4


这是 object c的特性呀,除了苹果这家是这么干的,其它家都不是。

苹果自以为是的独立特行也不仅仅体现在这一点了