Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Objective-C > 正文

Objective-C Categories/类别

时间:2014-08-20 21:50 来源:未知 作者:www.51ou.com 阅读:

有时候,可能会发现,想扩展现有的类添加行为,只在某些情况下是有用的。为了添加这样的扩展到现有类,可使用 Objective-C 类别和扩展。

如果需要向现有类添加一个方法,可能是添加功能,使其更容易在自己的应用做一些事情,最简单的方法是使用一个类别。

声明一个类的语法使用@ interface关键字,就像一个标准的Objective-C类描述,但并不表示任何从子类继承。相反,它指定括号中的类别,这样的名称:

@interface ClassName (CategoryName)

@end  

类别的特性

  • 一个类别可声明任何类,即使不具备原来的实现源代码。

  • 任何一个类别中声明的方法将所有的原始类的实例,以及任何原始类的子类。

  • 在运行时,一个类别添加方法没有任何区别,一个是通过原来的类。

现在,让我们来看看样本类别执行。让我们添加可可类NSString的一个类别。此类别将有可能为我们增添了一种新方法getCopyRightString,这有助于我们在返回的版权字符串。如下所示。

#import <Foundation/Foundation.h>

@interface NSString(MyAdditions)

+(NSString *)getCopyRightString;

@end

@implementation NSString(MyAdditions)

+(NSString *)getCopyRightString{
    return @"Copyright TutorialsPoint.com 2013";
}

@end


int main(int argc, const char * argv[])
{
    
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSString *copyrightString = [NSString getCopyRightString];
   NSLog(@"Accessing Category: %@",copyrightString);
   [pool drain];
    return 0;
}  

现在,当我们编译并运行程序,我们会得到以下的结果。

2013-09-22 21:19:12.125 Categories[340:303] Accessing Category:
 Copyright TutorialsPoint.com 2013
  

尽管任何一个类别添加方法类及其子类的所有实例,需要导入类的头文件在源代码文件中任何你想使用额外的方法,否则会碰到编译器警告和错误。

在我们的例子中,因为我们只需要一个单一的类,我们还没有包括任何头文件,在这种情况下,我们应该包含头文件,如上面所说的。

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Objective-C Categories/类别》技术文章,《Objective-C Categories/类别》详细使用和说明,有时《Objective-C Categories/类别》可能不完善、敬请谅解!如果《Objective-C Categories/类别》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
推荐内容
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片