- 浏览: 903950 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (466)
- iPhone, iOS , Objective-c (155)
- 数据库 (20)
- 设计模式 (5)
- 第三方包管理,cocoapod (2)
- 版本管理, SVN, Subversion, Git (1)
- Google, Android, Java (14)
- Wordpress (1)
- 职业素养 (3)
- 版本管理,git (3)
- 前端小技巧 (2)
- flash (1)
- javascript (5)
- Ruby (0)
- 编程语言 (1)
- 网络常识 (1)
- 找到生活好感觉 (5)
- 产品经理 (1)
- markdown (1)
- 云服务器 (1)
- iPhone (116)
- iOS (116)
- Objective-c (116)
- 学习技巧 (2)
- Google (5)
- Android (6)
- Java (21)
- python (1)
- sqlite (3)
- node.js (2)
- mongodb (2)
- 学习技巧,阅读 (2)
- 软件测试 (3)
- 架构设计 (2)
- 设计 (1)
- Spring framework (3)
- junit (1)
- Linux (2)
- 软件 (1)
- Struts2 (1)
- 版本管理 (3)
- SVN (3)
- Subversion (3)
- Git (3)
- mysql (5)
- quartz (1)
- 无关技术 (1)
- 前端 (1)
- Redis (1)
- 产品管理 (0)
- 计算机常识 (1)
- 计算机科学 (0)
- swift (1)
- 服务器 (2)
- 搜索 (1)
- Scala (1)
- J2EE (1)
- maven (1)
- 前端css (1)
- 英语 (1)
- 消息队列 (1)
- kafka (0)
- apache kafka (4)
- netbeans (1)
- IDE (2)
- 歌词 (1)
- 过滤器实现 (1)
- linux vim vi (1)
- jmeter (1)
- springcloud (1)
最新评论
-
hujingnemo:
不知道为什么打不开
CHM如何改编字体大小 -
weiboyuan:
求答案 weiboyuanios@163.com
iOS软件工程师面试题(高级) -
xueji5368:
这个现在已经广泛使用了嘛!
RoboGuice入门 -
Yao__Shun__Yu:
...
CHM如何改编字体大小 -
353144886:
非常之详细 美女求认识
sqlite数据类型 datetime处理
nil: A null pointer to an Objective-C object.
( #define nil ((id)0) )
Nil: A null pointer to an Objective-C class.
NULL: A null pointer to anything else, is for C-style memory pointers.
( #define NULL ((void *)0) )
NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values).
[NSNull null]: The singleton instance of NSNull.
Technically they're all the same,,, but in practice they give someone reading your code some hints about what's going on; just like naming classes with a capital letter and instances with lowercase is recommended, but not required.
If someone sees you passing NULL, they know the receiver expects a C pointer. If they see nil, they know the receiver is expecting an object. If they see Nil, they know the receiver is expecting a class. Readability.
if obj is nil , [obj message] will return NO, without NSException
if obj is NSNull , [obj message will throw a NSException
Demo1:
Demo2:
Demo3:
Demo4:
( #define nil ((id)0) )
Nil: A null pointer to an Objective-C class.
NULL: A null pointer to anything else, is for C-style memory pointers.
( #define NULL ((void *)0) )
NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values).
[NSNull null]: The singleton instance of NSNull.
Technically they're all the same,,, but in practice they give someone reading your code some hints about what's going on; just like naming classes with a capital letter and instances with lowercase is recommended, but not required.
If someone sees you passing NULL, they know the receiver expects a C pointer. If they see nil, they know the receiver is expecting an object. If they see Nil, they know the receiver is expecting a class. Readability.
if obj is nil , [obj message] will return NO, without NSException
if obj is NSNull , [obj message will throw a NSException
Demo1:
[NSApp beginSheet:sheet modalForWindow:mainWindow modalDelegate:nil //pointing to an object didEndSelector:NULL //pointing to a non object/class contextInfo:NULL]; //pointing to a non object/class
Demo2:
NSObject *obj1; if (obj1 != nil) { NSLog(@"object is not nil"); }else { NSLog(@"object is nil"); } testClass *c1; if (c1 != Nil) { NSLog(@"class is not Nil"); }else { NSLog(@"class is Nil"); } int *money; if (money != NULL) { NSLog(@"money is not NULL"); }else { NSLog(@"money is NULL"); }
Demo3:
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
Demo4:
//有异常! 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]); } }
发表评论
-
UIImage变为NSData并进行压缩
2014-05-19 20:23 1928//sdk中提供了方法可以直接调用 UIImage *im ... -
update cocapods
2014-05-17 22:27 800早上更新cocoapod依赖库,发现更新到32.1版本,早先的 ... -
iOS发送短信息代码实例
2014-05-16 18:15 2686#import <MessageUI/Message ... -
DISPATCH TIMER
2014-05-14 16:12 729/* __block void (^callback) ... -
UITextField左边显示图片
2014-05-13 18:08 1170The overlay view displayed on t ... -
iOS调用系统打电话,发短信功能
2014-05-11 15:48 2084先介绍一种最简单的方法: 调用打电话功能 [[UIAppl ... -
iOS面试题
2014-05-09 16:10 10771.写一下UIButton与UITableView的层级结构 ... -
socket二进制报文
2014-05-09 15:18 1300里面有帧头 字符串UTF-8 中间用0隔开 又一个字符串 ... -
将网站添加到桌面的方法
2014-05-08 14:25 1661<link href="http://www. ... -
iPhone通讯录联系人操作大全
2014-05-07 10:29 14591.需要引入AddressBook.framework框架 2 ... -
sqlite获取最新插入的rowid
2014-05-07 09:59 1521除了 last_insert_rowid select max ... -
号码归属地查询,拨打电话
2014-05-06 15:07 845在程序内调用拨打电话的方法,[[UIApplication s ... -
iOS时间合并
2014-04-28 17:55 1093合并同一时间的课程,同一时间可能有多个课程,比如13:30-1 ... -
vCard通讯录格式说明
2014-04-28 16:47 2556原帖:http://freesoftman.iteye.com ... -
UISearchBar背景色全套解决方案
2014-04-25 09:36 7442os系统升级到7.1后,原来在7.0下显示正常的UISearc ... -
升级XCode5.1.1遇到的奇葩问题NSString,NSObjectRuntime.h报错,Foundation找不到
2014-04-24 11:19 896升级XCode5.1.1遇到的奇葩问题NSString,NSO ... -
将NSString转为NSArray
2014-04-22 16:52 6269// Your JSON data: NSString *c ... -
另外一种NSData转为NSString的方法
2014-04-22 15:40 1211If the data is not null-termina ... -
HTTP,Socket,WebSocket异同
2014-04-18 16:54 1832参考文章: http://abbshr.g ... -
push隐藏UINavigtaionBar和UITabbar
2014-04-17 15:20 1091[self.navigationController setN ...
相关推荐
在Objective-C编程中,了解nil、Nil、NULL和NSNull之间的区别至关重要,因为它们在不同场景下有着不同的用途和含义。下面将逐一详细介绍这些概念。 1. **NULL** NULL是C语言中的一个宏,用来表示空指针。在C语言中...
在Objective-C中,`switch`语句可以处理`nil`和`NSNull`,这对于处理可选值或可能为空的对象很有用。不过,这种情况下的`switch`通常需要配合`if`判断来确保安全性。 ```objc id someObject; switch (someObject) {...
资源名称:Objective-C学习资料汇总专题资源目录:【】Objective-C NSAutoreleasePool【】Objective-c 中 nil, Nil, NULL和NSNull的区别【】Objective-C 中self 和 super【】Objective-C 的编程之道【】Objective-C_...
在iOS开发中,我们经常会遇到各种表示空值的符号,如nil、Nil、NULL和NSNull。理解它们的区别和用途是编写清晰、可维护代码的关键。 1. nil nil是Objective-C中的对象空值,主要用于表示id类型或者使用@interface...
在Nullability出现之前,Objective-C开发者通常会使用NSNull来表示一个空值,这在很大程度上依赖于文档说明和人为的代码约定,而使用Nullability注解后,可以更直观地声明某个对象是否可以为nil,比如使用NonNull...
在iOS开发中,后台返回的数据排空,即`...通过以上方法,开发者可以在iOS应用中有效地处理后台返回的`NSNull`和`nil`数据,提高应用的健壮性和用户体验。在实际开发中,应结合项目需求和团队规范灵活运用这些策略。
本书内容涉及了Objective-C中的nil、NULL、NSNull、BOOL、bool、Boolean、NSCFBoolean等关键数据类型的区别;以及在类型编码(Type Encodings)、存储类(Storage Classes)中的@__attribute__和instancetype的应用;...
在iOS开发中,理解`nil`、`NULL`和`NSNull`的区别至关重要,因为它们在不同的场景下有着特定的用途。以下是对这三个概念的详细解释: 1. `nil`: `nil`是Objective-C中的一个特殊值,通常用于对象指针。当你声明一个...
- `NSNull` 是Objective-C中的特殊对象,用于表示单个"null"值,常用于数组和字典中。 6. **NSObject占用的内存** - 一个`NSObject`实例的基本大小取决于架构和内存对齐,通常包括`isa`指针,实际大小可能因为...
Objective-C在iOS应用开发中扮演着重要角色,特别是在处理数据解析、页面间数据传递以及对象复制等方面。本文将深入探讨如何处理空字符串、页面传值以及自定义拷贝。 首先,处理空字符串是iOS开发中常见的任务。...
在Objective-C或Swift中,当我们使用如`NSJSONSerialization`或第三方库如`SwiftyJSON`解析JSON时,如果JSON数据中的某个字段为null,尝试将它转换为对象时,可能会导致程序崩溃。为了防止这种情况,我们需要采取...
当我们在Objective-C代码中解析JSON数据并尝试访问一个值为`null`的键时,会得到一个`NSNull`对象,而不是nil。这可能会导致一些未预期的行为,尤其是在进行条件判断或者遍历字典时。 要处理这种情况,有几种方法...
如果值为`nil`或等于`[NSNull null]`(因为`nil`和`NSNull`在某些情况下可能被视为不同),就从可变字典中移除该键值对。最后返回处理后的不可变字典。 通过使用这样的工具方法,开发者可以确保在存储字典到...
首先,`nil`是Objective-C中的关键字,用于表示指向对象的指针没有指向任何实际的对象,也就是说,这个指针是“空”的。当一个对象被释放或者从未被初始化时,它的引用通常会被设置为`nil`。因此,对于对象类型的...
它可以将JSON字符串转化为NSArray、NSDictionary、NSString、NSNumber、或者nil(对应于JSON中的null)。 使用SBJson时,你需要导入相关的头文件: ```objc #import "SBJson.h" ``` 接下来,我们将详细讲解如何在...
通过以上方法,可以有效地处理iOS开发中JSON解析时遇到的`null`、`nil`和`NSNumber`问题,确保应用的稳定性和安全性。在实际开发中,选择最适合项目需求的解决方案,并保持代码的可读性和可维护性。
对于Objective-C,可以使用NSNull对象来代表空值,但必须确保正确处理这种特殊对象。 字典取值是另一个潜在的崩溃点。如果尝试从字典中获取一个不存在的键的值,程序会崩溃。使用`object(forKey:)`方法时,如果键不...
"MTLJSONAdapterWithoutNil" 是一个Objective-C项目,它扩展了Mantle库的功能,主要是解决了在使用Mantle进行JSON序列化和反序列化时遇到的nil值处理问题。Mantle是一个轻量级的数据模型转换框架,通常用于iOS和...