对于nil,NULL和NSNull感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于failedtoparse:{"row":[8,6,12,7,13,8,14],"meta":[null,nul
对于nil,NULL 和NSNull感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8、iOS nil、NULL和NSNull 的使用、IOS 基础之nil,NULL,NSNULL区别详解、iOS 开发 nil/Nil/NULL/NSNull 的区别的有用信息。
本文目录一览:- nil,NULL 和NSNull
- failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8
- iOS nil、NULL和NSNull 的使用
- IOS 基础之nil,NULL,NSNULL区别详解
- iOS 开发 nil/Nil/NULL/NSNull 的区别
nil,NULL 和NSNull
nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋 值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同。
示例如下:- id object = nil;
- // 判断对象不为空
- if (object) {
- }
- // 判断对象为空
- if (object == nil) {
- }
- // 数组初始化,空值结束
- NSArray *array = [[NSArray alloc] initWithObjects:@"First", @"Second", nil];
- // 判断数组元素是否为空
- NSString *element = [array objectAtIndex:2];
- if ((NSNull *)element == [NSNull null]) {
- }
- // 判断字典对象的元素是否为空
- NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
- @"iPhone", @"First", @"iPad", @"Second", nil];
- NSString *value = [dictionary objectForKey:@"First"];
- if ((NSNull *)value == [NSNull null]) {
- }
1、nil:一般赋值给空对象;
2、NULL:一般赋值给nil之外的其他空值。如SEL等;
举个栗子(好重啊~):
[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
3、NSNULL:NSNull只有一个方法:+ (NSNull *) null;
[NSNull null]用来在NSArray和NSDictionary中加入非nil(表示列表结束)的空值. [NSNull null]是一个对象,他用在不能使用nil的场合。
4、当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去;
而向NSNull的对象发送消息时会收到异常。
因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值。如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。NSNull只有一个方法:
+ (NSNull *) null;
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。
浅谈关于nil和 null区别及相关问题
1、nil和null从字面意思来理解比较简 单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而null是将基本类型设置为空的,个人感觉有点像属性当中,基本类型分 配为assign NSString类型一般分配copy,而对象一般用retain。而且我们对于nil调用方法,不会产生crash或者抛出异常。
看一段
nil -> Null-pointer to objective- c object
NIL -> Null-pointer to objective- c class
null-> null pointer to primitive type or absence of data.
看一下用法
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。
2、一个可以研究一下的问题
在dealloc中
-(void) dealloc
{
self.test = nil;
[_test release];
test = nil;
}
这几个的区别
先说最简单的 [_test release]; 这个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次,就是指针减少一个,release到了0的时候,就是真正把这块内存归还给系统的时候了
再说self.test = nil;说明一下 属性和setter和getter方法就不难理解了
-(void) setTest:(NSString *)newString
{
if(_test != newString)
[_test release];
_test = [newString retain];
}
-(NSString *)test
{
return _test;
}
这个是setter和getter方法,而在这个问题中相当于刚才的代码改变为
if(_test != nil)
[_test release];
_test = nil;
现在就比较容易解释了,setter方法会 retain nil对象,在这之前已经先release了旧的对象,这个方法优点是成员变量连指向随机数据的机会都没有,而通过别的方式,就可能会出现指向随机数据的 情况。当release了之后,万一有别的方法要用要存取它,如果它已经dealloc了,可能就会crash,而指向nil之后,就不会发生错误了。 nil说白了就是计数器为0,这么说吧,当真正release一个对象的时候,NSLog是打印不了它指向的内存控件的,而当nil的时候,是可以打印出 来指向的一个内存空间。
那么现在也不难解释test = nil; 单纯的这种用法可以说是自己给自己制造内存泄露,这里可以这么理解,就是相当于将指向对象的指针直接和对象一刀两断了。直接让test指向nil,而内存实体不会消失,也不会有系统回收。
failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8
IDEA整合springboot与neo4j时出现这个问题
iOS nil、NULL和NSNull 的使用
一、概念
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。
1、nil用来给对象赋值(Objective-C中的任何对象都属于id类型),nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例)。
2、NULL则给任何指针赋值,NULL和nil不能互换。
3、而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同。
二、示例
id object = nil;
// 判断对象不为空
if (object)
{
}
// 判断对象为空
if (object == nil)
{
}
// 数组初始化,空值结束
NSArray *array = [[NSArray alloc] initWithObjects:@"First", @"Second", nil];
// 判断数组元素是否为空
NSString *element = [array objectAtIndex:2];
if ((NSNull *)element == [NSNull null])
{
}
要判断数组元素是否为空,以下的写法,都无效
if(!element)
if([element length] > 0)
if(element == NULL)
if(element == Nil)
// 判断字典对象的元素是否为空
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"iPhone", @"First", @"iPad", @"Second", nil];
NSString *value = [dictionary objectForKey:@"First"];
if ((NSNull *)value == [NSNull null])
{
}
三、
加深理解一
1、nil:一般赋值给空对象;
2、NULL:一般赋值给nil之外的其他空值,如SEL等;
示例:
[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
3、NSNULL:NSNull只有一个方法:+ (NSNull *)null;
3-1、[NSNull null]用来在NSArray和NSDictionary中加入非nil(表示列表结束)的空值。
3-2、[NSNull null]是一个对象,他用在不能使用nil的场合(在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值。如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类)。
4、当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去,但是向NSNull的对象发送消息时会收到异常。
加深理解二
浅谈关于nil和null区别及相关问题
1、nil和null从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而null是将基本类型设置为空的,个人感觉有点像属性当中,基本类型分配为assign NSString类型一般分配copy,而对象一般用retain。而且我们对于nil调用方法,不会产生crash或者抛出异常。
看一段
nil -> Null-pointer to objective- c object // 一个对象
NIL -> Null-pointer to objective- c class // 一个类
null-> null pointer to primitive type or absence of data. // 基本类型
看一下用法
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。
2、一个可以研究一下的问题
在dealloc中
-(voiddealloc
{
self.test = nil;
[_test release];
test = nil;
}
这几个的区别
先说最简单的[_test release]; 这个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次,就是指针减少一个,release到了0的时候就是真正把这块内存归还给系统的时候了
再说self.test = nil;说明一下 属性和setter和getter方法就不难理解了
-(voidsetTest:(NSString *)newString
{
if(_test != newString)
{
[_test release];
_test = [newString retain];
}
}
-(NSString *)test
{
return _test;
}
这个是setter和getter方法,而在这个问题中相当于刚才的代码改变为
if(_test != nil)
{
[_test release];
_test = nil;
}
现在就比较容易解释了,setter方法会retain nil对象,在这之前已经先release了旧的对象,这个方法优点是成员变量连指向随机数据的机会都没有,而通过别的方式,就可能会出现指向随机数据的情况。当release了之后,万一有别的方法要用要存取它,如果它已经dealloc了,可能就会crash,而指向nil之后,就不会发生错误了。
nil说白了就是计数器为0,这么说吧,当真正release一个对象的时候,NSLog是打印不了它指向的内存控件的,而当nil的时候,是可以打印出来指向的一个内存空间。
那么现在也不难解释test = nil; 单纯的这种用法可以说是自己给自己制造内存泄露,这里可以这么理解,就是相当于将指向对象的指针直接和对象一刀两断了。直接让test指向nil,而内存实体不会消失,也不会有系统回收。
IOS 基础之nil,NULL,NSNULL区别详解
IOS 基础之nil,NULL,NSNULL区别详解
① nil:一般赋值给空对象。
② NULL:NULL 是一个通用指针(泛型指针)。
一般赋值给 nil 之外的其他空值。如SEL等。
③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 nil 的场合。
因为在 NSArray 和 NSDictionary 中 nil 有特殊的含义(表示列表结束),所以不能在集合中放入 nil 值。如要确实需要存储一个表示“什么都没有”的值,可以使用 NSNull 类。NSNull只有一个方法:
+ (NSNull *) null;
④ 当向 nil 发送消息时,返回 NO,不会有异常,程序将继续执行下去。
而向 NSNull 的对象发送消息时会收到异常。
实例:
nil 是对objective c id 对象赋空值
例如
NSString * string = [NSString stringWithFormat:@"test"]; string = nil;
对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release 的同时最好也把他们赋值为nil,这样确保安全性,下面一个简单的一个例子:如果不赋值nil,可能导致程序崩溃
NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil]; [array release]; if (array) { //仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃 NSString * string = [array objectAtIndex:0]; NSLog(@"%@",string); }
编程的时候对集合类对象先赋值为nil,再将其release这样可以保证程序安全性,苹果官方例子中也看到过viewDidUnload把对象赋值nil,然后在dealloc方法中将他们release,
Nil: A null pointer to an Objective-C class.表示对类进行赋空值
NULL: A null pointer to anything else, is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针
NSNull 对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null】返回的对象来初始化NSArray中的内容
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- 总结IOS中nil、Nil、NULL和NSNull区别
- iOS中nil、Nil、NULL、NSNull详解
iOS 开发 nil/Nil/NULL/NSNull 的区别
C 用 0 来作为不存在的原始值,而 NULL 作为指针 (这在指针环境中相当于 0)。
Objective-C 在 C 的表达不存在的基础上增加了 nil。nil 是一个指向不存在的对象指针。虽然它在语义上与 NULL 不同,但它们在技术上是相等的。
在框架层面,Foundation 定义了 NSNull,即一个类方法 + null,它返回一个单独的 NSNull 对象。NSNull 与 nil 以及 NULL 不同,因为它是一个实际的对象,而不是一个零值。
另外,在 Foundation/NSObjCRuntime.h 中,Nil 被定义为指向零的类指针。这个 nil 的鲜为人知的大写的表兄并不常常出现,但它至少值得注意。
关于 nil:
刚被分配的 NSObject 的内容被设置为 0。也就是说那个对象所有的指向其他对象的指针都从 nil 开始,所以在 init 方法中设置 self.(association) = nil 之类的表达是没有必要的。
也许 nil 最显著的行为是,它虽然为零,仍然可以有消息发送给它。
在其他的语言中,比如 C++,这样做会使你的程序崩溃,但在 Objective-C 中,在 nil 上调用方法返回一个零值。这大大的简化了表达,因为它避免了在使用 nil 之前对它的检查:
// 举个例子,这个表达...
if (name != nil && [name isEqualToString:@"Steve"]) { ... }
// …可以被简化为:
if ([name isEqualToString:@"steve"]) { ... }
关于 NSNull:
NSNull 在 Foundation 和其它框架中被广泛的使用,以解决如 NSArray 和 NSDictionary 之类的集合不能有 nil 值的缺陷。你可以将 NSNull 理解为有效的将 NULL 或者 nil 值封装 boxing,以达到在集合中使用它们的目的:
NSMutableDictionary *mDic = [[NSMutableDictionary alloc]init];
mDic[@"someKey"] = [NSNull null];
NSLog(@"key :%@",[mDic allKeys]);
NSLog(@"dic :%@",mDic);
输出:
key :(
someKey
)
dic :{
someKey = "<null>";
}
总结一下:
NULL (void *) 0 C 指针的字面零值
nil (id) 0 Objective-C 对象的字面零值
Nil (Class) 0 Objective-C 类的字面零值
NSNull [NSNull null] 用来表示零值的单独的对象
我们今天的关于nil,NULL 和NSNull的分享就到这里,谢谢您的阅读,如果想了解更多关于failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8、iOS nil、NULL和NSNull 的使用、IOS 基础之nil,NULL,NSNULL区别详解、iOS 开发 nil/Nil/NULL/NSNull 的区别的相关信息,可以在本站进行搜索。
本文标签: