iOS 关于nil和Nil及null与<null>的区别
问题是这样的。
NSDictionary *sample = [NSJSONSerialization JSONObjectWithData:received options:NSJSONReadingMutableLeaves error:&error]; NSString *messageInfo = [sample objectForKey:@"message"];
sample是一个字典,messsageInfo是从字典中根据key值取得的,然后通过log可以知道messageInfo的值为<null>。
这时候如果需要判断其值是否为空。那么应该这么做:
比如说这时候需要弹出一个消息框。
if([messageInfo isEqual:[NSNull null]]){
        UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"Title" message:@"号码格式有误,请重新输入" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alter show];
    }
iOS中nil 、NULL、 Nil 、NSNull的区别
  1.nil
  >Defines the id of a null instance.
  定义一个实例为空, 指向oc中对象的空指针。是一个对象值。
  >示例代码:
   NSString *someString = nil;
   NSURL *someURL = nil;
   id someObject = nil;
   if (anotherObject == nil) // do something
  >当对某个对象release 的同时最好把他们赋值为nil,这样可以确保安全性,如果不赋值nil,可能导致程序崩溃.
      NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
      [array release];
      *release的同时应该将其赋值为nil
不然对象会成为僵尸对象。
      if (array)
      {
      //仅仅对数组release,并没有赋值为nil,在程序某个地方如果继续对数组操作,程序直接崩溃
          NSString * string = [array objectAtIndex:0];
          NSLog(@"%@",string);
      }
2. NULL: 是一个通用指针(泛型指针)
  >These macros define null values for classes and instances.
  NULL可以用在C语言的各种指针上,
  #define __DARWIN_NULL #define__DARWIN_NULLConstants
  >示例代码:
  int *pointerToInt = NULL;
  char *pointerToChar = NULL;
  struct TreeNode *rootNode = NULL;
>在Objective-C里,nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个值。而且我们对于nil调用方法,不会产生crash或者抛出异常。
  3.Nil
  >Defines the id of a null class.
  定义一个空的类,  A null pointer to an Objective-C class。
  Available in Mac OS X v10.0 through Mac OS X v10.4.
  Declared in NSObjCRuntime.h.
  Declared Inobjc.h
  >示例代码:
  Class someClass = Nil;
  Class anotherClass = [NSString class];
  4.NSNull
  >The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).
  NSNull类定义了一个单例对象用于表示集合对象的空值
>集合对象无法包含nil作为其具体值,如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象NSNull来表示。NSNull提供了一个单一实例用于表示对象属性中的的nil值。默认的实现方法中,dictionaryWithValuesForKeys:和setValuesForKeysWithDictionary:自动地将NSNull和nil相互转换,因此您的对象不需要进行NSNull的测试操作
iOS 关于nil和Nil及null与<null>的区别的更多相关文章
- ios开发理解nil,Nil, NULL
		
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [ ...
 - iOS 中nil,Nil,NULL,NSNull的区别
		
类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据 ...
 - Objective-C 中 NULL、nil、Nil、NSNull 的定义及不同
		
本文由我们团队的 康祖彬 童鞋撰写,这是他的个人主页:https://kangzubin.cn. 理解"不存在"的概念不仅仅是一个哲学的问题,也是一个实际的问题.我们是有形宇宙的居 ...
 - OC中的野指针,空指针,nil,Nil,NULL,NSNULL小结
		
周末与一个老朋友吃饭聊天,因为他正在培训班学习iOS开发,就随便聊了几句,发现自己OC基础上的欠缺和一些知识点的混淆.特此整理如下. 1.空指针 没有存储任何内存地址的指针就称为空指针(NULL指针) ...
 - nil和Nil和NULL的判断
		
,nil和Nil和NULL的判断 开 发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null-,然后我们把此值赋值给 NSArray,NSdictionary,或是N ...
 - nil、Nil、NULL、NSNull的区别
		
nil:指向一个对象的空指针,对objective c id 对象赋空值. Nil:指向一个类的空指针,表示对类进行赋空值. NULL:指向其他类型(如:基本类型.C类型)的空指针, 用于对非对象指针 ...
 - nil、Nil、NULL和NSNull的理解
		
http://blog.sina.com.cn/s/blog_4930f8e60101h71b.html 其实早就想研究一下nil.Nil.NULL和NSNull之间的区别,只是工作上除了nil,其它 ...
 - nil、Nil、NULL和NSNull的区别和联系
		
一.nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉: 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对 ...
 - [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别
		
Objective-C中nil.Nil.NULL.NSNull的区别 1.定义: nil: OC语言定义:#define nil __DARWIN_NULL / #define __D ...
 
随机推荐
- python中subprocess.Popen.poll
			
import subprocess proc = subprocess.Popen(['python', 'test.py'], stdout=subprocess.PIPE) while 1: pr ...
 - nginx 安装及代理配置。
			
新建etc/yum.repos.d/nginx.repo文件,添加以下内容:[nginx] name=nginx repo baseurl=http://nginx.org/packages/cent ...
 - Android RadioGroup设置默认选中项
			
今天有人问.Android 里面 RadioGroup里面有两个RadioButton怎么设置默认值? 第一个RadioButton设置 android:checked="true" ...
 - SQLite  命令
			
在shell下直接敲 sqlite3 进入sqlite命令行模式下(CLP的shell模式,CLP是sqlite3的命令行程序) sqlite3 -help (注意有空格)显示命令行模式下,sqli ...
 - JS 計算文本域還能輸入多少個字符
			
//輸入計數 //count:能輸入的數據總量 function Calculation(v, count) { var span = $(v).next(); va ...
 - 在MySQL中阻止UPDATE语句没有添加WHERE条件的发生
			
如果在生产环境中使用UPDATE语句更新表数据,此时如果忘记携带本应该添加的WHERE条件,那么..Oh,no…后果可能不堪设想.那么有没有什么办法可以阻止这样的事情发生,又不使用任何的审核工具呢.. ...
 - mysql——第一次学习记的笔记
 - gitlab 配置
			
一.Gitlab的使用 具体步骤: 1.打开 Git Bash,输入~ssh -keygen 然后一直回车,直至出现图片上的内容 1) 2) 2.然后自动生成.ssh文件夹,双击文件夹 1) 2) ...
 - 处理返回结果(XML)
			
var xmlHttp function showUser(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Br ...
 - mysql分区查询
			
SELECT *FROM INFORMATION_SCHEMA.partitions WHERE table_name='表名' and table_schema='数据库名'