为nil什么意思() 和nil要等价

记得曾经有不少朋友问过笔者茬Objective-CnilNil以及NULL的区别。最重要的是在面试中还有不少朋友常会被问到。记得当年刚找工作的时候笔者就被面试官问到过,现在笔者在这裏统一详细说明

对于学习过C/C++语言的朋友,对NULL一定很熟悉吧这就是在C/C++中的空指针。

C语言中NULL是无类型的,只是一个宏它代表空。我們不研究C++中的NULL因为在C++11以后又有了新的定义,我们不深究

这就是C语言中所谓的NULLC++的定义比较复杂,这里不说了):

由此我们可知NSNull是继承于NSObject的类型。它是很特殊的类它表示是空,nil什么意思也不存储但是它却是对象,只是一个占位对象

使用场景就不一样了,比如说服務端接口中让我们在值为空时传空。

这只是随手举的例子当然我们也可以不传这人参数。如果我们要统一比如通过runtime来动态将对象转荿我们的参数时,那么可以统一将值为nil的都设置为[NSNull null]

NULLnilNil这三者对于Objective-C中值是一样的都是(void *)0,那么为nil什么意思要区分呢又与NSNull之间有nil什么意思區别:

  • NULL是宏,是对于C语言指针而使用的表示空指针
  • nil是宏,是对于Objective-C中的对象而使用的表示对象为空
  • Nil是宏,是对于Objective-C中的类而使用的表示類指向空
  • NSNull是类类型,是用于表示空的占位对象与JS或者服务端的null类似的含意

不在同一网段内的两台电脑怎么訪问共享文件请帮忙。谢谢

想测试当前页面 两条数据中的部分内容交换 然后发送请求看是否能够成功的简单工具有吗

国内手机号码的规則(来自百度百科): 前3位为网络识别号;第4-7位为地区编码;第8-11位为用户号码 移动: 、135、136、137、138、139、150、151、152、1

我要回帖

更多关于 nil 的文章

 

随机推荐