IOS开发:Objective-C Category的最初体验

   Step1: 创建项目

  启动Xcode -> File -> New -> Project. 然后创建一个 iOS Single View Applciation。这里我们命名为 Categories.

开发:Objective-C Category的最初体验-最高的初体验">
  Step2: 创建Category

  现在来创建一个Category来为NSString添加扩展方法。点击 File -> New -> File 然后选择 Cocoa Touch Objective-C category. 这里我们命名为 RemoveNums。记得要从 Category on 下拉框选择 NSString,最后点击Create按钮旁的Next按钮。


  声明Category扩展的方法。

  选择 "NSString+RemoveNums.h"文件。添加以下代码:

1 @interface NSString (RemoveNums)
2 - (NSString *)removeNumbersFromString:(NSString *)string;@end

  实现Category扩展的方法

  接着来到"NSString+RemoveNums.m"文件。添加以下代码。大家可以看到这个方法实际做的事情就是从整个NSString去除掉所有的数字字符。

1 - (NSString *)removeNumbersFromString:(NSString *)string
2 {
3 NSString *trimmedString = nil;
4 NSCharacterSet *numbersSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
5 trimmedString = [string stringByTrimmingCharactersInSet:numbersSet];
6 return trimmedString;
7 }

  Step3: 导入Category

  在"ViewController.h"文件头部添加以下代码来导入Category

1 #import "NSString+RemoveNums.h"

  Step4: 测试Category

  在 ViewController.h 文件的 viewDidLoad 方法中添加以下代码。

1 NSString *stringWithNums = @"ABC 123";
2 NSLog(@"stringWithNums --> %@",stringWithNums);
3 stringWithNums = [stringWithNums removeNumbersFromString:stringWithNums];
4 NSLog(@"trimmed stringWithNums --> %@",stringWithNums);

  Step5: 使用Category的方法

  在Xcode的菜单栏点击 Product -> Run,测试过程中,请注意控制台首先输出的 "ABC 123",然后被方法去除数字后输出的"ABC"


  结论

  我们都知道添加子类是为某一种对象添加方法的途径,但是为了整个代码更加简洁直观,我们通常会用Category的扩展方法来替代子类的添加。

时间: 2024-11-02 20:18:54

IOS开发:Objective-C Category的最初体验的相关文章

简单介绍iOS开发中关于category的应用_IOS

创建category文件: 这里,一定要选好base的class, 如下: 无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择.但是Objective-C提供了一种 特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为.这样可以保证类的原原来的基础上,较小的改动就可以增加需要的功能.使 用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类.Category使用简单的方

objective ...-基于oc的ios开发,如何给一个系统类添加一个属性?

问题描述 基于oc的ios开发,如何给一个系统类添加一个属性? 基于oc的ios开发,如何给一个系统类添加一个属性? 目前我知道可以用继承或类别实现.但不知道哪种方式好 解决方案 用类别: .h文件 #import @interface UIButton (TLButton) @property(nonatomic,strong,readwrite)NSNumber* cityId; @property(nonatomic,strong,readwrite)NSNumber* typeId; @

objective c-关于ios开发的一些常识问题

问题描述 关于ios开发的一些常识问题 什么是sdk,以及xcode和sdk的区别,什么是API,集成开发工具是不是就是指xcode 解决方案 xcode是编译器 sdk是开发包 提供了各种API给你调用 解决方案二: api是数据获取接口,一般我们通过服务器端给定的api地址进行数据的获取 xcode是一个开发环境,一般用于ios开发 软件开发工具包(外语首字母缩写:SDK.外语全称:Software Development Kit) 解决方案三: sdk就是软件开发包,api是程序接口.sd

objective ...-基于oc的ios开发,oc的多态性体现在哪?

问题描述 基于oc的ios开发,oc的多态性体现在哪? 基于oc的ios开发,oc的多态性体现在哪里?举个小例子简单说一下吧 解决方案 一般来说,多态通过派生一个函数,并且重写其中的方法定义来实现,通过相同的基类类型访问,不同的对象执行不同的代码,如果你编写类库,它比较有用,如果你只是做一个应用,你的代码没有继续被复用的需求,那么就不太用得到. 参考:http://blog.csdn.net/g5dsk/article/details/6095516 解决方案二: 所谓多态性,是和OC的三大特性

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.       下载:https://github.com/mwaterfall/MWPhotoBrowser   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Gith

iOS开发资源汇总

如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/ Keychain保存数据封装: https://github.com/carlbrown/PDKeychainBindingsController 对焦功能的实现: http://www.clingmarks.com/?p=612 自定义圆角Switch按件: https://github.com/domesticcatsoftware/DCRou

《iOS 9 开发指南》——第1章,第1.1节IOS开发入门

第1章 IOS开发入门 iOS 9 开发指南 iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone.iPad和iTouch设备中.iOS通过这些移动设备展示了一个多点触摸界面及众多内置传感器的界面.本章将带领大家认识iOS系统,为读者步入本书后面知识的学习打下基础. 1.1 iOS系统介绍 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第1章\ iOS系统介绍.mp4 iOS是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日的Mac World

虚拟机安装iOS开发环境流水帐,附iOS Developer Program流水帐

  写在前面:1.这里只是体验iOS开发的一个权宜之计,虚拟机中运行Mac OS X相当缓慢.如果需要真正的开发还是需要购买Mac机器的.2.这里以雪豹为例,Lion没找到--     1.我的机器环境:Thinkpad X61,Windows 7 64bit旗舰版,4G DDR2内存     2.需要下载的软件:基础环境:VMWare 7.0及以上(低版本在Win7上有问题),Mac OS X Snow Leopard.iso.接下来是两个启动文件,因为雪豹的iso无法在虚拟机上直接启动,搜索

从C#到Objective-C,循序渐进学习苹果开发(3)--分类(category)和协议Protocal的理解

本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本文继续上一篇随笔<从C#到Object C,循序渐进学习苹果开发(2)--Objective-C和C#的差异>,继续对比介绍它们两者之间的差异,以便我们从C#阵营过来的人员加深印象,深入了解Objective-C语言的特性.本篇随笔主要针对Objective-C里面的分类(category)和协议Protocal概念的理解