[Objective-c 基础 - 2.8] category分类/类别/类目

A.给某个类扩充方法(不改变原来的类)

例如,给类Person加上名为Simon的category,加上一个-study方法

使用()注明

Person+Simon.h

 1 @interface Person (Simon)
 2 - (void) study;
 3 @end
 4
 5 Person+Simon.m
 6 @implementation Person (Simon)
 7 - (void) study
 8 {
 9     NSLog(@"学习----");
10 }
11 @end

使用:

 1 #import <Foundation/Foundation.h>
 2 #import "Person.h"
 3 #import "Person+Simon.h"
 4
 5 int main(int argc, const char * argv[]) {
 6     @autoreleasepool {
 7         Person *p = [[Person alloc] init];
 8         [p study];
 9     }
10     return 0;
11 }
12  

!!注意:

1.只能增加方法,不能增加成员变量;

2.分类方法可以访问原来的成员变量;

3.分类和原类存在同名方法的时候,分类的方法优先级比较高,会覆盖原类的同名方法;

4.多个分类存在同名方法的时候,调用决定于编译顺序,调用最后编译的(编译顺序可以在项目设置的“Buid Phases”中修改);

时间: 2025-01-19 23:56:13

[Objective-c 基础 - 2.8] category分类/类别/类目的相关文章

iOS开发OC基础:OC中的分类(类目)

//分类,category,(类目) //为没有源代码的类添加方法 //一定要注意,只能添加方法,不能添加实例变量 /** *  分类 类的定义也是分为接口部分和实现部分 接口部分:以@interface开头 + 类名 后跟小括号,小括号内填写的是分类名 @end结束 在@interface 与@end 之间添加方法. */ //分类为原类添加的方法,就相当于原类具有该方法,可以正常调用 因为涉及到几个分类的创建,所以就直接上传代码了,其实代码也不多,只是怕大家在建立分类的时候会混淆,所以直接把

黑马程序员— OC核心语法之构造方法、Category分类、类的本质、description和SEL

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一章我们学习了OC的一些核心语法,初步了解了OC作为一门开发语言的一些较为深层次的知识.本章我们继续学习OC的核心语法,主要包括OC的构造方法,Category分类,类的本质及深入研究,以及description关键字和SEL关键字. 第一讲     构造方法 1. 构造方法 构造方法是用来初始化对象的方法,是一个对象方法,以减号"-"开头,构造方法其实就是init方法,初始化完毕

类目(分类)

分类(类目)--字符串逆序输出 目录 NSString+Reverse.h #import <Foundation/Foundation.h> @interface NSString (Reverse) -(NSString *)reverse; @end NSString+Reverse.m #import "NSString+Reverse.h" @implementation NSString (Reverse) -(NSString *)reverse { NSMu

Objective-C - 分类(类别)的应用 Category

分类(类别)的应用 Category /* 分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法 使用注意: 1.分类只能增加方法,不能增加成员变量 2.分类方法实现中可以访问原来类中声明的成员变量 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类 --> 父类 */ #import "Person.h" #import "Person+One.h&

iOS开发-基础面试题(一) 分类: 面试题

iOS开发-基础面试题(一) 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答:浅层复制:只复制指向对象的指针,而不复制引用对象本身.?深层复制:复制引用对象本身.?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们

Objective-C中的Category(分类)

1 Category概念:动态的为已经存在的类添加新的行为(方法) 2 Category(分类)创建的方法 (1)通过Xcode生成分类 (2)可以手动生成分类,在头文件里面生成2个@interface 例如: 在Student.h文件中 @interface Student:NSObject -(void)test1; @end 下面是Student的分类,test为分类的名称 @interface Student(test) -(void)test2; @end 在Student.m文件中

OC语法9——Category分类

Category(分类): 当我们在开发过程中要给类添加新的方法时,一般不要去动原类. 再不改动原类的限制下,怎么拓展类的方法?以往我们的做法是新建子类使其继承该类,然后通过子类拓展类的行为. OC提供了一种全新的方法:Category(分类).在不改动原类的基础上动态的拓展类的行为. 假如我们要动态拓展Student类,则应该建一个分类(Category),注意:文件命名要有规范,Student+StuOthers.h 格式:只要在被扩展的类名(原类)后加(),在括号里写分类名(拓展类名):

obj-c9[[NSDate,{Category分类,Extension,管理&#39;私有”方法,Protocol (协议)}]

#import <Foundation/Foundation.h>//#import "Person.h"#import "NSString+SayHiMessage.h"#import "NSMutableArray+ChangeArray.h" #import "NSString+ExchangeChineseToEnglish.h" #import "NSString+EmailValidation

Audio Session Category 音频类别

Audio Session Category 音频类别 音频类别 获取输入硬件 获取输出硬件 与iPod混音 服从振铃/静音 AVAudioSessionCategoryPlayback 否 是 否 否 AVAudioSessionCategoryRecord 是 否 否 否 AVAudioSessionCategoryPlayAndRecord 是 是 否 否 AVAudioSessionCategoryAmbient 否 是 是 是 AVAudioSessionCategorySoloAmb