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语言类的深入和分类相关推荐

  1. 黑马程序员——OC语言------类的声明实现、面向对象

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 面向对象 一.面向对象的思想 C语言是面向过程,OC是面向对象,那么什么是面向对象呢?面向对象和 ...

  2. Objective-c:OC语言简介、类与对象

    Objective-c 简介 1.1980年代初,Brad Cox发明了Objective-C: 2.1985年乔布斯成立了NeXT公司,创建了NextSTEP,使用Objective-C开发的用户界 ...

  3. OC语言基础内容 类的定义 第一个OC

    OC基础day01 第一个OC程序 OC与C的基本区别 C语言的源文件 XXX.c OC语言的源文件 XXX.m 在C语言中 用printf打印信息 OC中用NSLog()打印信息 OC中的改变 OC ...

  4. ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  5. OC语言Block和协议

    OC语言Block和协议 分类: OC基础2014-10-07 09:24 162人阅读 评论(0) 收藏 举报 OC Block OC协议 OC语言BLOCK和协议 一.BOLCK (一)简介  B ...

  6. OC语言之Objective-C简介

    # Objective-C简介 ![](http://7xj0kx.com1.z0.glb.clouddn.com/qbs.png) ##1.Objective-C简介 - Objective-C是一 ...

  7. 24、OC语言的动态性学习(Runtime)

    文章目录 一.动态类型 二.动态绑定 三.动态加载 四.消息机制的基本原理 消息查找阶段 动态方法解析 消息转发 消息快转发 消息慢转发 消息发送以及转发机制的总结 重写respondsToSelec ...

  8. oc语言和c语言,C语言及OC语言初期学习心得

    2015-7-22,周三 经过一个星期C语言的学习,对基础知识语法已经有了一定的了解和认识.同时通过这三天对OC语言的学习,更加了解编程语言都是相融相通的.虽然 OC语言的语法和之前接触的C,JAVA ...

  9. 使用OC语言批量修改文件名称

    使用OC语言批量修改文件名称 最近从网上下载很多电视剧,但是名字都不尽如人意,所以要进行批量修改,有强迫症的,需要把文件名弄的完美. 原有的文件名,修改后的是这样的 我们创建一个非常简单的项目即可,不 ...

最新文章

  1. Transformer在CV领域有可能替代CNN吗?还有哪些应用前景?
  2. pytorch模型转换
  3. mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办
  4. 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
  5. 【机器学习】XGBoost学习笔记
  6. 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一3.2.2 建立实验室...
  7. 动态规划——最大子数组和(Leetcode 53)
  8. H G W S哪一个不是状态函数_HAWE哈威BVH11H/M/S/2-X24换向阀
  9. 机器人挠人脚心_挠同学脚心
  10. Debian分区工具partman
  11. 程序员玩游戏之四--娱网棋牌大连打滚子记牌器
  12. 3GPP 资源 使用、查找 教程
  13. iOS 图像选取器UIImagePickerController
  14. “无边框”引发口水大战 供应链考验手机硬件创新
  15. pdf太大怎么缩小兆数?怎样将pdf文档储存变小?
  16. Unity Input 通过蓝牙手柄控制游戏
  17. wireshark抓包报错The capture session could not be initiated on interface '\Device\NPF_Loopback'
  18. 如何用低成本方案解决室内超大场景下机器人定位与导航难题?
  19. 织梦如何添html5播放器,织梦ckplayer视频播放器插件安装使用教程
  20. 湾区4.4级地震,这些APP用得着!

热门文章

  1. java服务端代码_Java Socket编程服务器响应客户端实例代码
  2. UDS服务基础篇之22
  3. 嵌入式开发经验分享,把学习当作一种兴趣
  4. 普林斯顿微积分读本篇十九:微分方程
  5. 计算机信息技术的具体应用案例,信息技术应用案例学习心得体会.doc
  6. 利用Lumerical 有效实现太阳能电池光电特性仿真
  7. 如何用视频做网页的背景代码网页源码
  8. 【研究报告】2021奢侈品营销启示录——附下载链接
  9. win10安装rational rose 2007
  10. 阿里服务器部署及区块链币种同步