参考资料:iOS设计模式——Category

Category

  • Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的。
  • 相当于Swift中的功能扩展(extension)。
  • 新添加的方法同样也会被被扩展的类的所有子类自动继承。

Category的用途

1、 在不创建继承类的情况下实现对已有类的扩展。
2、 简化类的开发工作(当一个类需要多个程序员协同开发的时候,Category可以将同一个类根据用途分别放在不同的源文件中,从而便于程序员独立开发相应的方法集合)。
3、将常用的相关的方法分组。
4、 在没有源代码的情况下可以用来修复BUG。

示例:

在项目中添加文件选着Category文件类型

Objective-C-Category.jpg

NSString+EndWith.h


#import <Foundation/Foundation.h>@interface NSString (EndWith)
-(BOOL)endWith:(NSString*)end;@end

NSString+EndWith.m

#import "NSString+EndWith.h"@implementation NSString (EndWith)
-(BOOL)endWith:(NSString *)end{NSString *selfEnd = [self substringFromIndex:[self length]-[end length]];return [selfEnd isEqualToString:end];
}@end

main.m

#import <Foundation/Foundation.h>
#import "NSString+EndWith.h"
int main(int argc, const char * argv[]) {@autoreleasepool {NSString * str = @"c:/Media/mp3/xxx.mp3";NSLog(@"%d",[str endWith:@".mp3"]);}return 0;
}

转载于:https://www.cnblogs.com/Free-Thinker/p/10797416.html

Objective-C 之category相关推荐

  1. Objective C 类别(Category)与类扩展(Extensions)

    一.类别(Category) 类别(Category)是一种可以为现有的类(包括类簇:NSString...,甚至源码无法获得的类)添加新方法的方式无需从现有的类继承子类.类别添加的新方法可以被子类继 ...

  2. 深入理解iOS App的启动过程

    前言 启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间. 准备知识 Mach-O 哪 ...

  3. iOSApp是如何启动的

    转载自:https://blog.csdn.net/Hello_Hwc/article/details/78317863 Mach-o 哪些名词指的是Mach-o Executable 可执行文件 D ...

  4. 深入理解iOS APP启动过程

    前言 启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间. 准备知识 Mach-O 哪 ...

  5. iOS应用的启动流程和优化详解

    一.应用启动流程 1.整体过程 (1)解析Info.plist 加载相关信息,例如如闪屏 沙箱建立.权限检查 (2)Mach-O(可执行文件)加载 dylib loading time(动态库耗时) ...

  6. ios启动时间优化--理论

    启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动APP的,然后从main函数之前和main函数之后俩个角度去分析如何优化启动时间. mach-O 哪些名词指的是Ma ...

  7. 【Paper】Deep Learning for Anomaly Detection:A survey

    论文原文:PDF 论文年份:2019 论文被引:253(2020/10/05) 922(2022/03/26) 文章目录 ABSTRACT 1 Introduction 2 What are anom ...

  8. iOS全栈式开发工程师

    课程目录: --/iOS全栈式开发工程师/ ├──1.双师班课程介绍 | └──1.什么是双师教育模式.flv 13.19M ├──10.C语言之字符串 | └──1.字符串.flv 175.41M ...

  9. 《黑马程序员》 category分类的使用(Objective - c语法)

    ------- <a href="http://www.itheima.com" target="blank">android培训</a> ...

  10. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

最新文章

  1. 命名管道 win7未响应_大数据分析Python建立分析数据管道
  2. Codeforces681D Gifts by the List
  3. python list循环语句的使用方法
  4. Raft算法的Leader选举和日志复制过程
  5. C语言之折半查找(二分查找)
  6. python 3d大数据可视化_Python大数据可视化编程实践-绘制图表
  7. duration java_Java Duration类| ofDays()方法与示例
  8. Delphi 7皮肤控件VCLSkin 5 60的使用
  9. Data Pump failed with ORA-04031/ORA-4030?
  10. php+tcpdf+表格,php 使用tcpdf库输出pdf
  11. 织梦网站建设广告网络公司网站模板 电脑+手机 整站源码
  12. cad修改快捷键_CAD大神总结:100个CAD快捷键+20个CAD制图技巧
  13. 腾讯2016实习生招聘后台研发面试经
  14. oc项目中使用swift
  15. [附源码]计算机毕业设计springboot基于微信小程序的网络办公系统
  16. 前端 vue 使用高德地图组件:(二)获取鼠标点击位置坐标 和 图标覆盖物拖动后的坐标
  17. 【案例实践】Python多元线性回归、机器学习、深度学习在近红外光谱分析中的实践应用
  18. win7 开启无线网
  19. custom_filter
  20. 靶机渗透练习93-hacksudo:1.0.1

热门文章

  1. 漫谈CMS:ZOOMLA、NETCMS、风讯、动易异同
  2. ReportViewer教程(12)-按组折叠
  3. 后台向前台js传递参数
  4. 《scikit-learn》数据预处理与特征工程(三)特征选择
  5. string time java,【JAVA】之【string转time方法】
  6. LeetCode —— 146. LRU缓存机制(Python)
  7. Pandas数据操作
  8. cs224 -Lecture 1:Introduction and Word Vectors
  9. 网络爬虫之java基础篇QueryRunner(Ⅲ)
  10. 高低层特征融合【转载】