技术开发 频道

iPhone开发:Objective-C语法入门

  Categories

  Categories是Objective-C里面最常用到的功能之一。 基本上category可以让我们给已经存在的类增加方法,而不需要增加一个子类。而且不需要知道它内部具体的实现。

  如果我们想增加某个framework自带的类的方法,这非常有效。如果我们想在我们程序工程的NSString能够增加一个方法,我们就可以使用category。甚至都不需要自己实现一个NSString的子类。

  比如,我们想在NSString里面增加一个方法来判断它是否是一个URL,那我们就可以这么做:

  #import

  @interface NSString (Utilities)

  
- (BOOL) isURL;

  @
end

 

  这跟类的定义非常类似。区别就是category没有父类,而且在括号里面要有category的名字。名字可以随便取,但是习惯叫法会让人比较明白category里面有些什么功能的方法。

  这里是具体的实现。但是要注意,这本身并不是一个判断URL很好的实现。我们主要是为了整体的了解category的概念。

  #import "NSString-Utilities.h"

  @implementation NSString (Utilities)

  
- (BOOL) isURL

  {

  
if ( [self hasPrefix:@"http://"] )

  return YES;

  
else

  return NO;

  }

  @
end

 

  现在我们可以在任何的NSString类对象里都可以调用这个方法了。下面的代码在console里面打印的"string1 is a URL":

  NSString* string1 = @"http://www.CocoaDev.cn/";

  NSString
* string2 = @"Pixar";

  
if ( [string1 isURL] )

  NSLog (@
"string1 is a URL");

  
if ( [string2 isURL] )

  NSLog (@
"string2 is a URL");

 

  跟子类不一样,category不能增加成员变量。我们还可以用category来重写类原先的存在的方法,但是这需要非常非常小心。

  记住,当我们通过category来修改一个类的时候,它对应用程序里的这个类所有对象都起作用。

  后记:

  上面Objective-C的比较基础的大概的讲了一下。Objective-C还是比较好上手的。没有特别的语法需要去学习。而且一些概念在Objective-C里面被反复运用。

0
相关文章