转自:http://blog.sina.com.cn/s/blog_5fb39f910101akm1.html

类与对象的概念

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

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

类与对象是抽象与具体的关系。

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

类与类之间的关系——继承关系

A是B

如果这句话说的通,在设计程序的时候就可以看成是继承关系。

例如:学生与小学生 小学生也是学生,所以学生是小学生的父类,小学生是学生的子类。

oc与面向对象

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

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

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

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

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是将对象设置为空,而NULL是将基本类型设置为空的。而且我们对于nil调用方法,不会产生crash或者抛出异常。
看一下用法
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 *arr1 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];

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

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]); //count: 0,因为obj1=nil,所以后面的对象没有添加进去

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

NSObject *obj1 = [NSNull null];

NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1,@"three",nil];

for (NSString *str in arr1) {

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

} //result:One、Two、、three

NSObject *obj1 = [NSNull null];

NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1,@"three",nil];

for (NSString *str in arr1) {

if (str != [NSNull null]){

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

}

}//result:One、Two、three

IOS中类和对象还有,nil/Nil/NULL的区别相关推荐

  1. nil 和NULL 的区别

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): nil和NULL 的区别 在java项目中会遇到nil和null,下面详细说明下他们的区别: NULL 只能作为指针变量 ...

  2. nil和NULL 的区别

    1. NULL 只能作为指针变量的值. 如果1个指针变量的值是NULL值代表. 代表这个指针不指向内存中的任何1块空间 NULL其实等价于0  NULL其实是1个宏. 就是0 2. nil 只能作为指 ...

  3. ios nil、NULL和NSNull 的使用

    nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的met ...

  4. 关于nil和 null和NSNull的相关问题

    2019独角兽企业重金招聘Python工程师标准>>> 关于nil和 null和NSNull的区别及相关问题 1.nil和null从字面意思来理解比较简单,nil是一个对象,而NUL ...

  5. 浅谈关于nil和 null区别及相关问题

    1.nil和null从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而null是将基本类型设置为空的,个人感觉有点像属性当中,基本类型分配为assig ...

  6. NIL、NIL、NULL和NSNULL区别

    前言 记得曾经有不少朋友问过笔者,在Objective-C中nil和Nil以及NULL的区别.最重要的是,在面试中还有不少朋友常会被问到.记得当年刚找工作的时候,笔者就被面试官问到过,现在笔者在这里统 ...

  7. nil、NIL以及null间的联系和区别

    1.nil和null从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而null是将基本类型设置为空的,个人感觉有点像属性当中,基本类型分配为assig ...

  8. (0047)iOS开发之nil/Nil/NULL的区别

    小结: 1.oc最好用nil   [ nil  任意方法],不会崩溃 nil是一个对象值. NULL是一个通用指针(泛型指针). 2. NSNULL,NULL和nil在本质上应该是一样的,NULL和n ...

  9. iOS开发 nil Nil NULL NSNull 的使用

    nil: A null pointer to an Objective-C object. ( #define nil ((id)0) ) nil 是一个对象值. Nil: A null pointe ...

最新文章

  1. php 的opcode缓存apc以及其安装
  2. python 调用c++返回char*
  3. 引入外部化的配置文件
  4. 如何将您的Google Authenticator凭证移至新的Android手机或平板电脑
  5. Sublime text 2下alignment插件无效的解决办法
  6. 修改window窗体的背景色
  7. linux 多线程并行计算,浅谈.NET下的多线程和并行计算(五)线程池基础上
  8. 小米手机微信指纹支付上传服务器吗,为什么小米手机不支持微信指纹支付,客服这样回答...
  9. SQLServer公历转农历函数(1900年-2049年)
  10. 上海城市坐标系转换的空间校正方法(附控制点文件)
  11. nginx配置ssl证书
  12. 论文分享(2)MASAD: A Large-Scale Dataset for Multimodal Aspect-Based Sentiment Analysis
  13. PMBOK第六版工具与技术:数据收集数据分析数据表现
  14. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)
  15. selenium闪退
  16. 民宿OTA运营有哪些指标数据最重要
  17. 谁说QTP不能多线程 - 当Python遇上QTP
  18. 用计算机刻录光盘,刻录光盘,教您怎么用电脑将文件刻录到光盘
  19. 性格色彩测试android程序开发之三--dialog(续)
  20. 计算机试卷英语,计算机英语试卷

热门文章

  1. Python中的张量分解
  2. 从安全视角对机器学习的部分思考
  3. 损失函数/成本函数/目标函数的区别
  4. 自然语言处理NLP基本知识小结
  5. 段永朝:界面——之内、之外与之间
  6. 起源,机制与趋势,如何理解和定义城市大脑
  7. 短信升级为5G消息?三大运营商联合发布的《5G消息白皮书》说了啥?
  8. 全球自动驾驶政策概况及特征研究
  9. Unix操作系统背后的女程序员Lorinda Cherry去世,享年78岁
  10. 非 985/211 学校的毕业生,进大厂的机率有多大?