nil用来给对象赋值(oc的任何对象都属于id类型),NULL则给任何指正赋值,NULL和nil不能互换,nil用于类指针赋值(在oc中类是一个对象,是类的meta-class的实例),而NSNull则用于集合操作,虽然它们表示的都是空值,但使用场合完全不同,所以在编码时要严格按照变量类型来赋值,将正确的空值赋给正确的类型,使代码抑郁阅读和维护,也不易引起错误。
//判断对象不为空
if (object) {}
//判断对象为空
if (object == nil) {}
//数组初始化,空值结束
NSArray *pageNames = [[NSArrayalloc] initWithObjects:@"Document", @"Advanced", @"Statistics", nil ];
//判断数组元素是否为空
UIViewController *controller = [NSArray objectAtIndex:i];
if ((NsNull *)controller == [NSNull null]) {}
//判断字典对象的元素是否为空
NSString *userId = [NSDictionaryobjectForKey:@"key"];
if (userId == [NSNullnull]) {}
Oc有个特性,就是当发送消息给nil对象时,系统返回0值而不是引起异常,这和java烦人的NullPointerException以及C/C++的程序直接崩溃的处理完全不同,明白Oc的这个特性对于开发正确的ios程序非常重要,因为nil是对象的合法值,nil对象同样可以接受消息。eg:
person = nil;
[person castBallot];
NSLog(@"person = %@", person);
将对象置空,然后发送消息,程序同样接着往下执行而不会崩溃。
NSDecimalNumber *number = nil;
NSLog(@"number = %.2f", [number doubleValue]);
对象以为空,获取的数据可能已经不正确,这段代码将打印如下。
number = 0.00
空值处理不当是引起程序错误乃至崩溃的重要原因之一。
因为oc的集合对象,如NSArray,NSDictionary,NSSet等,都有可能包含NSNull对象,所以,如果以下代码中的item为NSNull,则会引起程序崩溃。
NSString *item = [NSArray objectAtIndex:i];
if ([item isEqualToString:@"test"]) {
}
以下代码时常见的错误,release对象没有设置为nil,从而引起程序崩溃。
id someObj = [[Objectalloc] init];
...
[someObj release];
...
if (someObj) {
}
分享到:
相关推荐
IOS 基础之nil,NULL,NSNULL区别详解 ① nil:一般赋值给空对象。 ② NULL:NULL 是一个通用指针(泛型指针)。 一般赋值给 nil 之外的其他空值。如SEL等。 ③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 ...
在Objective-C编程中,了解nil、Nil、NULL和NSNull之间的区别至关重要,因为它们在不同场景下有着不同的用途和含义。下面将逐一详细介绍这些概念。 1. **NULL** NULL是C语言中的一个宏,用来表示空指针。在C语言中...
在iOS开发中,我们经常会遇到各种表示空值的符号,如nil、Nil、NULL和NSNull。理解它们的区别和用途是编写清晰、可维护代码的关键。 1. nil nil是Objective-C中的对象空值,主要用于表示id类型或者使用@interface...
在iOS开发中,后台返回的数据排空,即`...通过以上方法,开发者可以在iOS应用中有效地处理后台返回的`NSNull`和`nil`数据,提高应用的健壮性和用户体验。在实际开发中,应结合项目需求和团队规范灵活运用这些策略。
标题"ios-清理模型中的nil.zip"所涉及的内容就是关于如何在模型转换过程中有效地处理这些`nil`或`null`值,以避免程序运行时出现异常。 描述中提到的"清理字典转模型后模型中的nil,属性多于字典,服务器返回为null...
这篇“iOS学习笔记 --SQLite3”旨在帮助新手掌握如何在iOS应用中使用SQLite3进行数据管理,包括创建数据库、插入数据、查询数据等基本操作。 首先,我们需要了解SQLite3的基本概念。SQLite3是一个嵌入式的关系型...
这段Swift代码扩展了Dictionary,使得在访问字典元素时,如果键对应的值是null或NSNull,它会返回nil,而不是引发异常。 总结来说,"iOS jason 去null"是一个关于如何在解析JSON时安全处理null值的技术,主要通过...
请注意,这样做可能会打破一些期望`nil`的行为,因为在Lua中,`nil`和任何值都不相等,而`"null"`字符串与其他字符串或变量可以进行比较。因此,如果你的代码依赖于`nil`的这种特性,可能会导致意外的结果。在进行...
总之,理解和正确使用`nil`和`null`,以及它们与不同对象类型的交互,是iOS开发中必不可少的技能。通过上述的判断方式,开发者可以确保在处理可能为空的对象时避免运行时错误,从而提高应用的稳定性和用户体验。希望...
本文将深入探讨iOS中常见的数据类型转换,包括NSString、NSData、NSArray、NSDictionary等之间的转换,以及布尔类型、枚举类型、nil、NULL和NSNull的区别,还有id类型的使用。 首先,我们关注NSString的数据转换。...
通过以上方法,可以有效地处理iOS开发中JSON解析时遇到的`null`、`nil`和`NSNumber`问题,确保应用的稳定性和安全性。在实际开发中,选择最适合项目需求的解决方案,并保持代码的可读性和可维护性。
在iOS开发过程中,掌握一些基础和实用的技巧是至关重要的。以下是一些我在学习iOS时总结的知识点,希望对你也有帮助: 1. **关闭键盘方法**:在iOS中,你可以通过调用`resignFirstResponder`方法来关闭当前的文本...
在iOS开发中,特别是在使用Swift或Objective-C进行编程时,理解并正确使用泛型中的`nullable`、`null_resettable`、`null kindof`关键字至关重要。这些关键字用于明确表示对象是否可以为`nil`,这有助于防止因意外的...
当我们在Objective-C代码中解析JSON数据并尝试访问一个值为`null`的键时,会得到一个`NSNull`对象,而不是nil。这可能会导致一些未预期的行为,尤其是在进行条件判断或者遍历字典时。 要处理这种情况,有几种方法...
此外,处理nil值时可使用NSNull来表示空值。 7. 自定义类和对象: 开发者还需学会如何编写自定义类,包括声明和实现类,以及如何定义类的接口和实现部分。对象的数据属性和行为方法也是构建应用程序时必须掌握的...