iOS中类和对象,还有nil,Nil,NULL的区别

一.类和对象

类与对象的概念:

1.类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法)

2.对象是类的一个实例,是一个具体的事物

3.类其实就是一种数据类型,它的变量就是对象

4.类与类之间的关系--继承关系

eg:学生与小学生,小学生也是学生,所以学生是小学生的父类,小学生是学生的子类

OC与面向对象:

1.对象是oc程序的核心。“万事万物皆对象”是程序中的核心思想

2.类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量及方法

3.类可以看成是静态属性(实例变量)和动态属性(方法)的集合体

4.IOS SDK里面提供了大量供编程人员使用的类,编程人员也可以定义自己的类

二.nil,Nil,NULL的区别

1.

nil:指向oc中对象的空指针

Nil:指向oc中类的空指针

NULL:指向其他类型的空指针,如一个C语言类型的内存指针

NSNull:在集合对象中,表示空值得对象

若obj为nil:

[obj message]将返回NO,而不是NSException

若obj为NSNull:

[obj message]将抛出异常NSException

2.

nil 和NULL  从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解是nil是将对象设置为空,而NUL是将基本类型设置为空,而且我们对于nil调用方法,不会产生crash或者抛出异常。

eg:

NSURL *url = nil;

Class class = Nil;

int *pointerInt = NULL;

nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。

这五个概念很容易混淆,在一些场合下他们具有同样的用法,首先解释一些空指针的意思,空指针是指该指针未指向一块有意义的内存区。如:int *p,int *p = NULL;

NSObject *obj1 = [ [NSObject alloc] init];

NSObject *obj2 = [ NSNull null];

NSObject *obj3 = [NSObject new];

NSObject *obj4 ;

NSArray *array = [NSArray arrayWithObjects:obj1,obj2,obj3,obj4];

NSLog(@"array count:%ld",[array count]);   //count:3,因为obj = nil,在加入obj4时就结束添加对象

NSObject *obj1;

NSObject *obj2 = [ [NSObject alloc] init];

NSObject *obj3 = [NSNull null];

NSObject *obj4 = [NSObject new];

NSArray *array = [NSArray arrayWithObjects:obj1,obj2,obj3,obj4];

NSLog(@"array count :%ld",[array count]); // count:0,因为obj1为nil,所以后面的对象没办法添加进去

[NSNull null]通常作为占位符作用,如下:

NSObject *obj1 = [NSNull null];

NSArray *arr1 = [NSArray arrayWithObject:@"one",@"two",obj1,@"three",nil];

for(NSString *str in arr1) {

NSLog(@"array object:%@",str);

}  //result:one,two,three

 

时间: 2024-09-29 10:16:53

iOS中类和对象,还有nil,Nil,NULL的区别的相关文章

iOS-nil,Nil,NULL的区别

一.简述 1.nil用来给对象赋值(Objective-C中的任何对象都属于id类型) 2.NULL则给任何指针赋值,NULL和nil不能互换 3.nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例) 4.NSNull则用于集合操作 5.虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil; if (object) { NSLog(@"判断对象不为空"); } if (object == nil) { N

nil 与 null 的区别

nil 与 null 的区别 nil 连对象都没有 null 有对象,但对象内容为空 以NSString 类为例 NSString *str1 = nil; //连字符串对象都没有 控制台输出 (null) NSString *str2 = null: //有字符串对象,只是字符串里没有内容,即指向一个空对象. 控制台输出 (null) // NSString 这个类比较特别,因为用的非常普遍,所以不用 alloc 来创建,可以直接以下面这种方式来创建 NSString *str3 = @"&q

Nil,nil,NSNULL,NULL的区别

一.nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉: 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为"空对象".(注意:我这里强调的是"空对象",下面我会拿它和"值为空的对象"作对比!!!) 所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等. 二.NSNull NSNull和ni

nil和null的区别

NULL? ? ?? ? 只能作为指针变量的值.如果1个指针变量的值是NULL值代表.代表这个指针不指向内存中的任何1块空间 ? ?? ? NULL其实等价于0? NULL其实是1个宏.就是0 ? ? ? 2. nil ? ?? ? 只能作为指针变量的值.代表这个指针变量不指向内存中的任何空间.? ?? ? nil其实也等价于0也是1个宏.就是0. ? ?? ? 所以, NULL和nil其实是一样的. ? ? ? 3. 使用建议. ?? ? ?? ? 虽然使用NULL的地方可以是nil使用 ni

IOS中类和对象de区别

类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据类型,它的变量就是对象. 类与类之间的关系——继承关系 A是B 如果这句话说的通,在设计程序的时候就可以看成是继承关系. 例如:学生与小学生 小学生也是学生,所以学生是小学生的父类,小学生是学生的子类. oc与面向对象 对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想.

类和对象 nil/Nil/NULL的区别

iOS-----类和对象,nil/Nil/NULL的区别 iOS中类和对象,nil/Nil/NULL的区别 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据类型,它的变量就是对象. 类与类之间的关系——继承关系 A是B 如果这句话说的通,在设计程序的时候就可以看成是继承关系. 例如:学生与小学生 小学生也是学生,所以学生是小学生的父类,小学生是学

<转>ios nil、NULL和NSNull 的使用

nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil; // 判断对象不为空 if (object) { } // 判断对象为空 if (object == nil) { } // 数组初始化,空值结束 N

ios开发理解nil,Nil, NULL

nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = @"要赋给剪切板的字符串"; 1 ID 可以传递任何消息给id,但如果该id不支持这个消息就会返回一个运行时异常,通常就是:“unrecognisedselector sent to

ios nil、NULL和NSNull 的使用

nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil; // 判断对象不为空 if (object) { } // 判断对象为空 if (object == nil) { } // 数组初始化,空值结束 N