IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull
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相关推荐
- iOS学习笔记-自己动手写RESideMenu
代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...
- LearnOpenGL学习笔记—入门03:Hello Triangle
LearnOpenGL学习笔记-入门03:Hello Triangle 0 前言 1 图形渲染管线 2 顶点输入 3 VAO,VBO 3.1 VAO建立 3.2 VBO建立 4 shader 5 绘制 ...
- OpenCV for Ios 学习笔记(4)-标记检测1
本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...
- IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...
IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- iOS学习笔记-地图MapKit入门
代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...
- iOS学习笔记-自定义过渡动画
代码地址如下: http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swi ...
- IOS学习笔记07---C语言函数-scanf函数
2013/8/7 IOS学习笔记07---C语言函数-scanf函数 ------------------------------ qq交流群:创梦技术交流群:251572072 ...
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
最新文章
- Java过滤器与SpringMVC拦截器之间的关系与区别
- NetCore+MySql+EF 数据库生成实体模型
- 【收藏】Docker安装微信
- 页面瘦身之压缩viewState和保存viewState到服务器
- 换根dp求树所有节点的最小深度
- BSS段、数据段、代码段、堆与栈
- 少年开始学习c#编程,过路的大神请担待!
- ubuntu下gvim启动出现gtk warning Invalid input string
- springboot 404_Spring Boot(四) 异常处理
- 你们是魔鬼吗?Adobe研发了一款反PS工具:自己打自己?
- c++分治法求最大最小值实现_你所不了解的分治算法
- excel 相邻数计算机,Excel计算公式大全.doc
- StringUtil.isEmpty(str)、StringUtil.isNotEmpty(str)和StringUtil.isBlank(str)区别
- cadence 原理图orcad使用总结
- Python中sys.argv[]的用法简明解释
- 全国高中数学联赛——代数
- layer非常不错的web弹窗/层解决方案
- 免费简历,ppt模板
- 计算机初中教师教材知识测试,开县中小学教师新教材考试初中信息技术
- 阿里云短信服务(申请与代码)
热门文章
- 要让机器人切土豆丝,英伟达首先给土豆建了个模
- 图灵奖得主Whitfield Diffie等一众大佬解读智能科学未来新发展 |“之识无界”大会...
- 沙发变身遥控器,涂鸦里藏PCB,MIT技术宅的智能家居竟然是这样
- 网站性能调优开发工具: Lighthouse, Puppeteer 以及进阶部分丨 Google 开发者大会 2018...
- 微信小程序之圆形进度条(自定义组件)
- 内存泄露从入门到精通三部曲之常见原因与用户实践
- Linux基本命令四(文件系统)
- malware分析视频
- 创新创新再创新(4)
- 安装Ubuntu时分区选择