面试总结其1

    技术2022-07-11  97

    部分碰到过的的面试题总结

    objc中向一个nil对象发送消息将会发生什么?nill和NULL的区别

    )

    objc中向一个nil对象发送消息将会发生什么?

    如果向一个nil对象发送消息,首先在寻找对象的isa指针时就是0地址返回了,所以不会出现任何错误。也不会崩溃。

    详解:

    如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil);

    如果方法返回值为指针类型,其指针大小为小于或者等于sizeof(void*) ,float,double,long double 或者long long的整型标量,发送给nil的消息将返回0;

    如果方法返回值为结构体,发送给nil的消息将返回0。结构体中各个字段的值将都是0;

    如果方法的返回值不是上述提到的几种情况,那么发送给nil的消息的返回值将是未定义的。

    nill和NULL的区别

    NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。

    我个人理解为:NULL就像是一个空瓶子里面没有水,而nil则是连瓶子都没有。

    Markdown 。。。未完待续l

    参考文档

    Processed: 0.017, SQL: 9