概述类目是Objective-C中最有用的一个特性。实质上,类目允许你为一个已存在的类添加一些方法而不用子类化该类,也不需要你了解该类的实现细节。 这是特别有用的,因为你可以给一个内建的对象添加方法。当你想在你的应用程序里面给所有NSString类型的实例添加一个方法,你只需要添加一个类目,而不需要通过定义一个子类来添加该方法。 手机 iphone apps ipad 安卓 开发提示: 比如,我想给
类目是Objective-C中最有用的一个特性。实质上,类目允许你为一个已存在的类添加一些方法而不用子类化该类,也不需要你了解该类的实现细节。 这是特别有用的,因为你可以给一个内建的对象添加方法。当你想在你的应用程序里面给所有Nsstring类型的实例添加一个方法,你只需要添加一个类目,而不需要通过定义一个子类来添加该方法。 手机 iphone apps ipad 安卓 开发提示: 比如,我想给Nsstring添加一个方法以判断它是不是一个URL,写法就像这样: #import <Cocoa/Cocoa.h> @interface Nsstring (UtilitIEs) - (BOol) isURL; @end 手机 iphone apps ipad 安卓 开发提示: 这很像一个类的声明。不同的地方在于后面没有列出父类,并且在括号里面写了类目的名称。类目的名字可以随便取,但是最好能表达出你在类目中包含的方法所要做的事。 下面是一个实现。切记,这不是很好的检查URL的方法。我们只是为了说清楚类目的概念。 #import "Nsstring-UtilitIEs.h" @implementation Nsstring (UtilitIEs) - (BOol) isURL { if ( [self hasPrefix:@"http://"] ) return YES; else return NO; } @end 现在,你可以使用Nsstring的这个方法了,下面的代码会在控制台打印“string1 is a URL”: Nsstring* string1 = @"http://pixar.com/"; Nsstring* string2 = @"Pixar"; if ( [string1 isURL] ) NSLog (@"string1 is a URL"); if ( [string2 isURL] ) NSLog (@"string2 is a URL"); 手机 iphone apps ipad 安卓 开发提示: 与子类不同,你不能通过类目来添加实例变量。但是你能通过类目重写(overrIDe)类中已经存在的方法,当然,重写的时候要特别小心。 记住,当你通过类目更改一个类的时候,这个更改会影响你这个应用程序中所有这个类的实例。 总结
以上是内存溢出为你收集整理的类目(CATEGORY)全部内容,希望文章能够帮你解决类目(CATEGORY)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)