1.oc最好 用nil   [ nil  任意方法],不会崩溃
 nil 是一个对象值。
NULL是一个通用指针(泛型指针)。

2. NSNULL,NULL和nil在本质上应该是一样的,NULL和nil其实就是0,但是在Objective-c中,
   对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,
   则可以用[NSNULL null返回的对对象来初始化NSArray中的内容,
3.因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值。
  如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。NSNull只有一个方法:

+ (NSNull *) null;
因为Object-C的集合对象,如NSArray、NSDictionary、NSSet等,都有可能包含NSNull对象,所以,如果一下代码中的item为NSNull,则会引起程序崩溃。

//
//  main.m
//  OC-特殊数据类型
//
//  Created by wangtouwang on 15/3/20.
//  Copyright (c) 2015年 wangtouwang. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"int main(int argc, const char * argv[]) {@autoreleasepool {// 首先介绍nil 代表对象空指针Person  *p = [Person new];NSLog(@"%@",p==nil?@"TRUE":@"FALSE");Person *p2 ;NSLog(@"%@",p2==nil?@"TRUE":@"FALSE");Class pc = [Person class];// 介绍 Nil 代表类是否存在NSLog(@"%@",pc==Nil?@"TRUE":@"FALSE");Class testClass ;NSLog(@"%@",testClass==Nil?@"TRUE":@"FALSE");//介绍 NULL NULL 是个值  对Objective-C值类型为空:int number = Null;(相当于 int number = 0;)  ( #define NULL ((void *)0)  )int *money=NULL;if (money == 0 )NSLog(@"money is NULL");elseNSLog(@"money is not NULL");//介绍 NSNull 空对象 主要是适用于 数组  因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值NSObject *obj1 = [[NSObject alloc] init];NSObject *obj2 = [NSNull null];NSObject *obj3 = [NSObject new];NSObject *obj4;NSArray *arr1 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];NSLog(@"arr1 count: %ld", [arr1 count]);    //arr1 count: 3
        NSObject *obj1;NSObject *obj2 = [[NSObject alloc] init];NSObject *obj3 = [NSNull null];NSObject *obj4 = [NSObject new];NSArray *arr2 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];NSLog(@"arr2 count: %ld", [arr2 count]);   //arr2 count: 0//有异常!NSObject *obj1 = [NSNull null];NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1, @"three" ,nil];for (NSString *str in arr1) {NSLog(@"array object: %@", [str lowercaseString]);}//修改NSObject *obj1 = [NSNull null];NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1, @"three" ,nil];for (NSString *str in arr1) {if (![str isEqual:[NSNull null]]){NSLog(@"array object: %@", [str lowercaseString]);}}}return 0;
}

转载于:https://www.cnblogs.com/ak23173969/p/4354318.html

IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull相关推荐

  1. iOS学习笔记-自己动手写RESideMenu

    代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...

  2. LearnOpenGL学习笔记—入门03:Hello Triangle

    LearnOpenGL学习笔记-入门03:Hello Triangle 0 前言 1 图形渲染管线 2 顶点输入 3 VAO,VBO 3.1 VAO建立 3.2 VBO建立 4 shader 5 绘制 ...

  3. OpenCV for Ios 学习笔记(4)-标记检测1

    本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...

  4. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...

    IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...

  5. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  6. iOS学习笔记-地图MapKit入门

    代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...

  7. iOS学习笔记-自定义过渡动画

    代码地址如下: http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swi ...

  8. IOS学习笔记07---C语言函数-scanf函数

    2013/8/7 IOS学习笔记07---C语言函数-scanf函数 ------------------------------ qq交流群:创梦技术交流群:251572072            ...

  9. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  10. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

最新文章

  1. Java过滤器与SpringMVC拦截器之间的关系与区别
  2. NetCore+MySql+EF 数据库生成实体模型
  3. 【收藏】Docker安装微信
  4. 页面瘦身之压缩viewState和保存viewState到服务器
  5. 换根dp求树所有节点的最小深度
  6. BSS段、数据段、代码段、堆与栈
  7. 少年开始学习c#编程,过路的大神请担待!
  8. ubuntu下gvim启动出现gtk warning Invalid input string
  9. springboot 404_Spring Boot(四) 异常处理
  10. 你们是魔鬼吗?Adobe研发了一款反PS工具:自己打自己?
  11. c++分治法求最大最小值实现_你所不了解的分治算法
  12. excel 相邻数计算机,Excel计算公式大全.doc
  13. StringUtil.isEmpty(str)、StringUtil.isNotEmpty(str)和StringUtil.isBlank(str)区别
  14. cadence 原理图orcad使用总结
  15. Python中sys.argv[]的用法简明解释
  16. 全国高中数学联赛——代数
  17. layer非常不错的web弹窗/层解决方案
  18. 免费简历,ppt模板
  19. 计算机初中教师教材知识测试,开县中小学教师新教材考试初中信息技术
  20. 阿里云短信服务(申请与代码)

热门文章

  1. 要让机器人切土豆丝,英伟达首先给土豆建了个模
  2. 图灵奖得主Whitfield Diffie等一众大佬解读智能科学未来新发展 |“之识无界”大会...
  3. 沙发变身遥控器,涂鸦里藏PCB,MIT技术宅的智能家居竟然是这样
  4. 网站性能调优开发工具: Lighthouse, Puppeteer 以及进阶部分丨 Google 开发者大会 2018...
  5. 微信小程序之圆形进度条(自定义组件)
  6. 内存泄露从入门到精通三部曲之常见原因与用户实践
  7. Linux基本命令四(文件系统)
  8. malware分析视频
  9. 创新创新再创新(4)
  10. 安装Ubuntu时分区选择