Objective-C(七、分类和延展)——iOS开发基础


结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~


七、分类和延展


1、分类(范畴,类目,类别……)
(1)创建方式:File New -> OS X -> Source -> Objective-C File -> Category+FileName+Class(Xcode6.3)


(2)作用:在不修改原始类模型的基础上,给某个类扩充方法。分类提供简单的方式将类的定义模块化到相应地分类中,不需要创建子类就可以扩充方法


(3)语法:(假设给NSObject类添加Sort排序分类)


命名规则:“原始类+分类名”,在新建时输入分类名Sort,系统会自动生成“NSObject+Sort.h”“NSObject+Sort.m”


声明:NSObject+Sort.h

 #import <Foundation/Foundation.h>

 @interface NSObject (Sort)
 //分类中不能添加成员变量
 //{
 //    NSInteger _num;
 //}
 //报错:instance variables may not be placed in categories

 //扩充方法的声明
 - (void)methodA;
 - (void)methodB;

 @end

实现:NSObject+Sort.m

 #import "NSObject+Sort.h"

 @implementation NSObject (Sort)
 //扩充方法的实现
 - (void)methodA {

 }

 - (void)methodB {

 }
 @end

(4)分类的优点
a、一个庞大的类可以分功能模块进行开发,思路更清晰,多人开发,利于团队合作;
b、在不修改原始类的基础上扩充方法;
c、不创建子类就能够进行当前类的方法扩充


(5)使用注意要点
a、分类只能扩充方法,不能扩充成员变量(要扩充用继承);
b、在分类方法中可以访问原始类中定义的成员变量;
c、分类允许重定义原始类中的方法,会覆盖原始类的方法,导致原方法不可用,不建议重定义
d、当原始类,不同分类中有相同方法时,只有最后编译的有效
编译顺序查看:双击
双击
查看编译顺序
方法调用顺序:分类(最后参与编译的分类优先)——>原始类


2、延展(extension) 本质是分类
(1)语法

@interface 类名 () //括号里可写可不写
 //方法声明
 @end

(2)作用:
a、在.m中,作私有方法的声明,同时实现方法(私有方法命名方法名前加下划线);
在Student.m中

 #import "Student.h"

 @interface Student (p1) //括号可写可不写,名字自己取

 - (void) _showInfo;

 @end

 //可写多个
 @interface Student (p2) //括号可写可不写,名字自己取

 - (void) _showInfo2;

 @end


 @implementation Student

 //私有方法实现
 - (void)_showInfo {
 //    XXX;
 }

 - (void)_showInfo2 {
 //    XXXX;
 }
 @end

b、在.h中,按照功能模块进行区分,方便阅读和查找;
Student.h文件中

 #import <Foundation/Foundation.h>

 @interface Student : NSObject
 {
    //XXX;
 }
 - (void)methodA;

 @end

 @interface Student (p) //括号可写可不写,名字自己取

 - (void) showInfo; //公有方法,在.m中实现

 @end

c、在foundation框架中经常使用此语法,方法是公有的,例如NSString.h,NSArray.h

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值