博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【语法】category
阅读量:6708 次
发布时间:2019-06-25

本文共 1806 字,大约阅读时间需要 6 分钟。

category

category(分类)就是在不改变类文件的前提下,然后动态添加类的方法                             

  1.oc提供了一种与众不同的方式--catagory,可以动态的为已经存在的类添加新的行为(方法)

  2.这样可以保证类的原始设计规模比较小,功能增加时间在逐步扩展

  3.使用category对类惊醒扩展时间,不需要创建子类

  4.category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中

 

category的使用场景

  1.在定义类时的某些情况下(例如需求变更),你可能想要位其中的某个或几个类中添加新的方法

  2.一个类中包含了许多不同种类的方法需要实现,而浙西方法需要不同团队的成员实现

  3.在使用基础类库中的类时,有可能希望这些类实现一些自己需要的方法,比如写一个NSString+JSON.h为NSString着个类拓展一些解析JSON的方法。

 

 

【例子】

Student.h
////  Student.h//  category////  Created by 裴烨烽 on 14-1-27.//  Copyright (c) 2014年 裴烨烽. All rights reserved.//#import 
@interface Student : NSObject-(void)test;@end
Student.m

 

////  Student.m//  category////  Created by 裴烨烽 on 14-1-27.//  Copyright (c) 2014年 裴烨烽. All rights reserved.//#import "Student.h"@implementation Student-(void)test{    NSLog(@"调用了text方法");}@end
【1.创建category】
 
【2.填写添加方法的内容】
 
【3.项目栏多出两个category文件】

Student+test.h
////  Student+test.h//  category////  Created by 裴烨烽 on 14-1-27.//  Copyright (c) 2014年 裴烨烽. All rights reserved.//#import "Student.h"//告诉文件要给哪个文件添加类。@interface Student (test)//()括号代表的是分类,()中的test代表分类的名称-(void)test2;//方法只能拓展方法。@end
Student+test.m
////  Student+test.m//  category////  Created by 裴烨烽 on 14-1-27.//  Copyright (c) 2014年 裴烨烽. All rights reserved.//#import "Student+test.h"@implementation Student (test)-(void)test2{    NSLog(@"这个调用了test2方法");}@end
main.m
////  main.m//  category////  Created by 裴烨烽 on 14-1-27.//  Copyright (c) 2014年 裴烨烽. All rights reserved.//#import 
#import "Student.h"#import "Student+test.h"int main(int argc, const char * argv[]){ @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Student *stu=[[Student alloc] init]; [stu test]; [stu test2]; } return 0;}

 

转载于:https://www.cnblogs.com/madeininfi/p/3534708.html

你可能感兴趣的文章
python编程之字符串转处理
查看>>
.NET string字符串的截取、移除、替换、插入
查看>>
第三方支付原理与概述
查看>>
附加权限
查看>>
sqlalchemy 基本操作
查看>>
我的 vim 基本配置
查看>>
Spring|IOC启动流程
查看>>
ajax读取XML文件并显示到下拉列表框中
查看>>
day19 装饰器
查看>>
asp.net core教程 (二)
查看>>
MySQL 查看用户授予的权限
查看>>
关于mybatis组合查询的分析
查看>>
requests库入门02-简单了解HTTP协议
查看>>
Android流式布局控件
查看>>
封装RabbitMQ.NET Library 的一点经验总结
查看>>
三、索引优化(2)聚集索引
查看>>
飞鱼星流控王VF12路由器使用体验
查看>>
Exchange Server 2013安装部署初体验
查看>>
二十年后的回眸(9)——十年著书路
查看>>
转UWP
查看>>