1.类的两种包装类: 将基本数据包装成对象:NSValue;NSNumber;

NSValue是NSNumber的父类,

NSValue用来封装一些基本数据, NSValue是一个通用的包装类,用来包装单个基本数据类型;

NSNumber是一个更具体的包装类,用于包装c语言的各种数值类型。(数值!)

其主要包括3个方法:

+(id)numberWithXxx:直接将特定类型的值包装成NSNumber;

-(id) initWithXxx:需要先创建一个NSNunmer对象,再使用该方法,用一个基本 数据值来初始化这个对象;

-(id)xxxValue:返回NSNumber的包装的基本类型的值。

#warming 实验1:使用NSNumber的三个方法。

2.处理类的对象:NSLog,description;

NSObject中提供了NSLog,description来处理类的对象;

NSLog打印的是对象 description的返回值;

description的作用:让对象进行自我描述。

ps:自带的description总是返回对象的 16进制首地址。

#warming 实验2:重写description方法;

“isEqual”和“==”: “==”表示比较的两者内存地址必须相同。

ps:NSString中,用常量池来管理直接字符串,常量池保证相同的字符串直接量只有一个。

NSString重写了isEqual方法,NSObject中二者没有区别(“isEqual”和“==”);

重写isEqual:方法可以提供自定义的相同标准;

重写isEqual需满足以下条件: 自反性;对称性;传递性;一致性;对任何不是nil的x,[x isEqual:nil]一定返回假。

#warming 实验3:重写isEqual方法,只要id相同就提示重复;

3.类别和扩展

(1)类别(category):扩展类,方便类的子类使用扩展后的方法;

注意:类别只能扩展类的方法,不能添加成员变量;也不能用@property合成属性。

添加类别的语法:

@interface 已有类(类别名)

@end

@implementation 已有类(类别名)

@end

使用类别的作用:

1.方便类的子类使用扩展后的方法;

2.可以使用类别将类的实现方法分模块化实现,分布到不同的实现文件中,提高项目后期的可维护性。

3.使用类别来调用私有方法。

(2)扩展:相当于匿名的类别,但是可以添加成员变量和用@property合成属性。

4.协议与委托

【学习笔记】【oc】类的包装类 协议 category的更多相关文章

  1. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  2. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  3. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  4. 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus

    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...

  5. UML学习笔记:类图

    UML学习笔记:类图 有些问题,不去解决,就永远都是问题! 类图 类图(Class Diagrame)是描述类.接口以及它们之间关系的图,用来显示系统中各个类的静态结构. 类图包含2种元素:类.接口, ...

  6. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  7. [原创]java WEB学习笔记07:关于HTTP协议

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Java SE学习笔记 --->高级类特性 ---> toString() 方法

    概述: toString() 方法在面向对象当中十分常见,使用频率很高,和equals() 方法一样,也是Object类中定义的方法. jdk中 源码: java.lang.Object类中ToStr ...

  9. Object C学习笔记14-分类(category)

    在.NET中有一个非常带劲的特性,那就是扩展方法. 扩展方法使你能够向现有类型“添加”方法(包括你自定义的类型和对象噢),而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的 ...

随机推荐

  1. HDOJ的题目分类

    模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 10 ...

  2. cf700A As Fast As Possible

    On vacations n pupils decided to go on excursion and gather all together. They need to overcome the ...

  3. 关于unsigned int和int的加法

    补码(two's complement) 在计算机系统中,数值一律用补码来表示和存储.原因在于,使用补码,可以将符号位和数值域统一处理:同时,加法和减法也可以统一处理.此外,补码与原码相互转换,其运算 ...

  4. DatabaseMetaData的用法【转载】

    一 . 得到这个对象的实例Connection con ;con = DriverManager.getConnection(url,userName,password);DatabaseMetaDa ...

  5. php开启错误提示

    1.在php.ini文件里加上下面两句 display_errors = Onerror_reporting = E_ALL | E_STRICT 2.在Apache的 httpd.conf文件里加上 ...

  6. Java程序员的日常—— 垃圾回收中引用类型的作用

    在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...

  7. IBinder对象在进程间传递的形式(一)

    命题 当service经常被远程调用时,我们经常常使用到aidl来定一个接口供service和client来使用,这个事实上就是使用Binder机制的IPC通信.当client bind servic ...

  8. setWillNotDraw和setFillViewport

    Romain Guy write a little info about a ScrollView attribute that is missing  from documentation : An ...

  9. C语言判断文件是否存在

      用函数access,头文件是io.h,原型:    int   access(const   char   *filename,   int   amode); amode参数为0时表示检查文件的 ...

  10. Java基础知识强化93:算一下你来到这个世界多少天的案例

    1. 分析: (1)键盘录入你的出生年月日 (2)把该字符串转换为一个日期 (3)通过该日期得到一个毫秒值 (4)获取当前时间的毫秒值 (5)用(4)-(3)得到一个毫秒值 (6)把E的毫秒值转换为天 ...