IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2306字,纯文字阅读大概需要4分钟。
内容图文
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, constchar * 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"); else NSLog(@"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]); } } } return0; }
原文:http://www.cnblogs.com/ak23173969/p/4354318.html
内容总结
以上是互联网集市为您收集整理的IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull全部内容,希望文章能够帮你解决IOS 学习笔记 2015-03-20 O之 nil,Nil,NULL,NSNull所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。