澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2020-05-08 17:15 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

傻傻分不清楚,IOS中的空值介绍

nil表示空的实例,而那几个最初字母大写的Nil则意味空的类,剖断某些Class是还是不是为空,语意上应当用Nil。

NSNull

NSNull是叁个OC对象,是贰个用来表示空值的类,独有一个单例方法: [NSNull null],平时用来在集聚对象中保存多个空的占位对象。

使用惯例:在Foundation集结对象(NSArray、NSDictionary、NSSet等)中有叁个nil值得缺欠,因为语法规定了那些聚焦是以nil为终结标识的。由此不能够用nil来存储多少个空值,所以平时选用[NSNull null]空对象来存款和储蓄。

NSArray * array = [NSArray arrayWithObjects:@"name",@"age", nil]; 
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"object",@"key",@"zhh",@"name",nil];

当如下情况时,数组里只有name和age:
NSArray * array = [NSArray arrayWithObjects:@"name",@"age", nil,@"wo",nil];

下面的使用时正确的
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];

补充:

NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];mutableDictionary[@"someKey"] = [NSNull null];NSLog(@"Keys: %@,mutableDictionary = %@", [mutableDictionary allKeys],mutableDictionary); 

总结

图片 1


(NSNull *)null  //重回值是三个单例子,与kFCNull 相等。

在Foundation/NSObjCRuntime.h中,Nil被定义为指向为空的类指针,那几个Nil并有难题会使用到,但也值得注意。

在C语言里用0来作为“不设有”的原始值,而用NULL作为指针空值。OC里表示“不设有”的多样格局为:NULLnilNilNSNull

因为 NSNull与 CFNullRef 是 Toll-Free Bridging. 所以 NSNull 的类措施

- makeObjectsPerformSelector:aSelector withObject:(nullable id)argument 

参照文书档案

  • Objective-C 中 NULL、nil、Nil、NSNull 的概念及分裂
  • nil / Nil / NULL / NSNull ? 傻傻分不知底
  • ios nil、NULL和NSNull 的使用

if ((NSNull *)FallingWood== kCFNull) {

         NSLog(@"数组中的该因素是空";

}else {

         NSLog(@"数组中的该因素非空"卡塔尔(قطر‎;

}

那时,打字与印刷出来的Keys和mutableDictionary的值是空的,什么也还没!所以NSNull在这里个辞书里担负二个占位符,表示没有

NULL

NULL本质为:(void*)0

利用惯例NULL一本用于表示C指针空值,比如:
int *a = NULL;
char *b = NULL;
struct User *userM = NULL;

当某些API想要传入有些指针(void *),而不是id类型时,最好照旧传来NULL,以此保持了Objective-C严厉的概念。比如NSArray的那一个API,argument必要的是id,所以传入nil会相比较好。

- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument

而像NSMutableArray的sortUsingFunction:context:

- (void)sortUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))compare context:(nullable void *)context;

在这里,context传入NULL会比传播nil好。

Toll-Free Bridging : 有局部数据类型能够同期在 Foundation Framework 和 Core Foundation Framework中选择。那象征,对于同三个数据类型,你不仅可以够将其充任参数字传送入 Core Foundation 函数,也足以将其充任选拔者对其发送 Objective-C 信息(即调用ObjC类方法)。这种在 Core Foundation 和 Foundation 之间沟通使用数据类型的技巧就叫 Toll-Free Bridging.

标志 含义
NULL 0 C指针的字面零值
nil 0 Objective-C对象的字面零值
Nil 0 Objective-C类的字面零值
NSNull [NSNull null] 用来表示零值的单独的对象

nil

nil本质为:(void*)0
nil特征:纵然为空,依旧能够向它发送音讯,在nil上调用方法都回去二个零值。

NSString *name;
NSLog(@"%p  %hhd", name, [name isEqualToString:@"CoderKo1o"]); // 0x0 0

运用惯例nil用于表示指向OC对象(id类型的目的,也许采纳@interface证明的OC对象)的指针为空,譬如:

NSString *string = nil;
id object = nil;

在YYModel中看看这般一句,倏然发掘自个儿对广阔的空值有个别模糊,于是记录下此文。

本条数组对象arr其实独有@1和@2三个要素,@3已经被截掉了。

平日性行使

  • 判断数组成分是还是不是为空
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]) {

}

if (!json || json == (id)kCFNull) return nil;

参考:[]

Nil

Nil精气神也是:(void *)0

利用惯例Nil用来表示指向OC类(Class)类型的指针为空,举例:

Class someClass = Nil;
Class stringClass = [NSString class];

nil  : Defines the id of a null instance    定义实例的空指针

Nil  : Defines the id of a null class      定义类的空指针

NULL : 定义别的种类(基本数据类型、C类型、SEL)的空指针

dic = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions   error:NULL];

char * q = NULL;

NSNull :

The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).

NSNull类定义了多个单例对象,用于表示集结对象(数组,辞典等卡塔尔国中的空值(当有些情况不容许选拔nil表示空State of Qatar。能够通过上面2个例子看一下:

//  数组中nil是得了标记,所以数组中的空用[NSNull null] 表示

     NSArray *Test = [NSArray arrayWithObjects:@"一万年太久", @"分秒必争",[NSNull null],nil];

     NSString *FallingWood = [Test objectAtIndex:2];

     if ((NSNull *)FallingWood==[NSNull null]) {

          NSLog(@"数组中的该因素是空"State of Qatar;

     }else  {

          NSLog(@"数组中的该因素非空"卡塔尔国;

}

//  字典中nil是终止标记,所以数组中的空用[NSNull null] 表示

NSDictionary *Test = [NSDictionary dictionaryWithObjectsAndKeys:[NSNull null],@"one",@"difang",@"two", nil];

NSString *FallingWood = [Test objectForKey:@"one"];

if ((NSNull *)FallingWood==[NSNull null]) {

         NSLog(@"数组中的该因素是空";

}else {

         NSLog(@"数组中的该因素非空"卡塔尔国;

}

kFCNull  :  const CFNullRef kCFNull; // the singleton null instance  是NSNull的单例

本文由澳门威利斯人发布于网络资讯,转载请注明出处:傻傻分不清楚,IOS中的空值介绍

关键词: 澳门威利斯人 不清楚 Nil iOS学习笔记 IOS入门级