OC语言类的深入和分类
OC语言类的深入和分类
一、分类
(一)分类的基本知识
概念:Category 分类是OC特有的语言,依赖于类。
分类的作用:在不改变原来的类内容的基础上,为类增加一些方法。
添加一个分类:
文件结构图:
在分类中添加一个方法
Study方法的实现
测试程序:
(二)分类的使用注意
(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量
(2)在分类方法的实现中可以访问原来类中的成员变量;
(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告);
(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;
(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。
(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。
(三)分类编程练习
(1)给NSString类增加一个类方法,计算某个字符串对象中阿拉伯数字的个数;
(2)给NSString类增加一个对象方法,计算当前字符串对象中阿拉伯数字的个数;
分类中方法的声明
分类中方法的实现
测试程序:
二、类的深入研究
(一)类的本质
类本身也是一个对象,是class类型的对象,简称“类对象”。
Class类型的定义:
Typedef struct obj class *class;
类名就代表着类对象,每个类只有一个类对象。
利用class 创建 Person类
利用Person 创建Person类型的对象
Person *p=[[Person alloc] init];
获取内存中的类对象有两种方法:
(1)class c=[p claa];//指向类的对象的指针调用class方法
(2)Class c1=[Person class];//使用类名调用class方法
注意:c和c1打印出来的地址相同,class c2=[p claa];可以证明所有的对象共用一个类方法。
(二)类的加载和初始化
测试程序:
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次;
2.当第一次使用某个类时,就会调用当前类的+initialize方法;
3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法,最后调用分类的+load方法),先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)。
4.注意:在初始化的时候,如果在分类中重写了+initialize方法,则会覆盖掉父类的。
5.重写+initialize方法可以监听类的使用情况。
OC语言类的深入和分类相关推荐
- 黑马程序员——OC语言------类的声明实现、面向对象
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 面向对象 一.面向对象的思想 C语言是面向过程,OC是面向对象,那么什么是面向对象呢?面向对象和 ...
- Objective-c:OC语言简介、类与对象
Objective-c 简介 1.1980年代初,Brad Cox发明了Objective-C: 2.1985年乔布斯成立了NeXT公司,创建了NextSTEP,使用Objective-C开发的用户界 ...
- OC语言基础内容 类的定义 第一个OC
OC基础day01 第一个OC程序 OC与C的基本区别 C语言的源文件 XXX.c OC语言的源文件 XXX.m 在C语言中 用printf打印信息 OC中用NSLog()打印信息 OC中的改变 OC ...
- ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- OC语言Block和协议
OC语言Block和协议 分类: OC基础2014-10-07 09:24 162人阅读 评论(0) 收藏 举报 OC Block OC协议 OC语言BLOCK和协议 一.BOLCK (一)简介 B ...
- OC语言之Objective-C简介
# Objective-C简介 ![](http://7xj0kx.com1.z0.glb.clouddn.com/qbs.png) ##1.Objective-C简介 - Objective-C是一 ...
- 24、OC语言的动态性学习(Runtime)
文章目录 一.动态类型 二.动态绑定 三.动态加载 四.消息机制的基本原理 消息查找阶段 动态方法解析 消息转发 消息快转发 消息慢转发 消息发送以及转发机制的总结 重写respondsToSelec ...
- oc语言和c语言,C语言及OC语言初期学习心得
2015-7-22,周三 经过一个星期C语言的学习,对基础知识语法已经有了一定的了解和认识.同时通过这三天对OC语言的学习,更加了解编程语言都是相融相通的.虽然 OC语言的语法和之前接触的C,JAVA ...
- 使用OC语言批量修改文件名称
使用OC语言批量修改文件名称 最近从网上下载很多电视剧,但是名字都不尽如人意,所以要进行批量修改,有强迫症的,需要把文件名弄的完美. 原有的文件名,修改后的是这样的 我们创建一个非常简单的项目即可,不 ...
最新文章
- Transformer在CV领域有可能替代CNN吗?还有哪些应用前景?
- pytorch模型转换
- mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办
- 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
- 【机器学习】XGBoost学习笔记
- 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一3.2.2 建立实验室...
- 动态规划——最大子数组和(Leetcode 53)
- H G W S哪一个不是状态函数_HAWE哈威BVH11H/M/S/2-X24换向阀
- 机器人挠人脚心_挠同学脚心
- Debian分区工具partman
- 程序员玩游戏之四--娱网棋牌大连打滚子记牌器
- 3GPP 资源 使用、查找 教程
- iOS 图像选取器UIImagePickerController
- “无边框”引发口水大战 供应链考验手机硬件创新
- pdf太大怎么缩小兆数?怎样将pdf文档储存变小?
- Unity Input 通过蓝牙手柄控制游戏
- wireshark抓包报错The capture session could not be initiated on interface '\Device\NPF_Loopback'
- 如何用低成本方案解决室内超大场景下机器人定位与导航难题?
- 织梦如何添html5播放器,织梦ckplayer视频播放器插件安装使用教程
- 湾区4.4级地震,这些APP用得着!