【学习笔记】【oc】类的包装类 协议 category
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的更多相关文章
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- UML学习笔记:类图
UML学习笔记:类图 有些问题,不去解决,就永远都是问题! 类图 类图(Class Diagrame)是描述类.接口以及它们之间关系的图,用来显示系统中各个类的静态结构. 类图包含2种元素:类.接口, ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- [原创]java WEB学习笔记07:关于HTTP协议
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java SE学习笔记 --->高级类特性 ---> toString() 方法
概述: toString() 方法在面向对象当中十分常见,使用频率很高,和equals() 方法一样,也是Object类中定义的方法. jdk中 源码: java.lang.Object类中ToStr ...
- Object C学习笔记14-分类(category)
在.NET中有一个非常带劲的特性,那就是扩展方法. 扩展方法使你能够向现有类型“添加”方法(包括你自定义的类型和对象噢),而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的 ...
随机推荐
- 酷派D530刷机指引
酷派D530是我的第一台智能手机,刚入手的时候是挺激动的,什么Root啦,精简系统删官方应用啦,app2sd啦,杂七杂八的应用装了一堆,折腾得不亦乐乎.但过了那个热度之后,现在我对于智能手机的要求还是 ...
- java NIO的多路复用及reactor模式【转载】
关于java的NIO,以下博客总结的比较详细,适合初学者学习(http://ifeve.com/java-nio-all/) 下面的文字转载自:http://www.blogjava.net/hell ...
- G - Island Transport - hdu 4280(最大流)
题意:有N个岛屿,M条路线,每条路都连接两个岛屿,并且每条路都有一个最大承载人数,现在想知道从最西边的岛到最东面的岛最多能有多少人过去(最西面和最东面的岛屿只有一个). 分析:可以比较明显的看出来是一 ...
- 一不小心写了个bootstrap风格下拉控件 JqueryUI + bootstrap
受够了EasyUI的封闭,Bootstrap虽然华丽但是功能太渣,闲着无聊写个下拉控件玩玩吧,不喜勿喷哈... 第一步:先设计下我的下拉控件的样子 1.既然是bootstrap风格的,我想应该是这样的 ...
- JuiceSSh破解分析
JuiceSSH是一款免费的远程ssh客户端,感觉是一款挺优秀的软件,里边有一些高级功能需要购买高级版才能使用,这里便对其对高级功能的破解进行分析. 本文仅用于学习交流使用,请尊重作者,勿在网上肆意发 ...
- NYOJ-744蚂蚁的难题(一)
这个题都说是水题,楞是没做出来,看了好多题解,感觉这个规律没看懂,后来在讨论区看到了一个题解,感觉有点懂了,写一下自己的理解 首先要明白异或的意思,简单一句话: 同0异1,既然这样,让求区间a,b 中 ...
- json 项目应用
package com.founder.ec.dec.action; import java.net.URLEncoder; import java.util.HashMap; import java ...
- Avast注册以及更新
昨天无聊在网上看Avast,然后下了玩. Avast有三种版本,免费版,网络版,高级版. 下了个高级版,在贴吧和论坛找激活码,发现大部分都没用,最后找了一个许可文件 关于Avast的注册,有在线和离线 ...
- Asp.net 回车默认按钮
<head> <script type="text/javascript"> function OnKey() { if (ev ...
- php long time(1)
好久好久没有发表新的文章了,主要是懒得在这里写,都记在记事本上,所得都是自己理解的情况下写的,如今借此闲暇记录下来,:::: ****************PHP****************** ...