翻译:类别(Category)

作者: 栗子烤肉 | 来源:发表于2016-06-12 09:09 被阅读173次

使用类别不通过子类的方法,为已经存在的类定义额外的方法,即使这个类的源代码对你不可用。通常使用类别将方法添加到已经存在的类中,例如,在Cocoa框架中定义的类。添加的方法被子类继承,在运行时无法与原始类方法区分开。在自定义的类中也可以使用类别。

  • 分散类的实现到单独的源文件中,例如,可以将一个有很多类的方法分成几个类别,并将每个类别放在不同的文件中。

  • 声明私有方法

给一个类添加方法,可以在接口文件中类别名称下声明方法,并在实现文件中相同的名字下定义方法。类别名称表明这些方法是在其他地方声明的某个类的扩展,而不是一个新的类。

声明

类别接口的声明很像类接口声明,除了类别名称列在类名后的圆括号内,而父类并没有此要求。类别必须导入接口文件来扩展类。

<pre><code>
\#import "SystemClass.h"

@interface SystemClass (CategoryName)

// method declarations

@end

</pre></code>

通用命名规则是类别的基本文件名是类别扩展的类名+分类名。类别声明为SystemClass+CategoryName.h

如果使用类别来声明自定义类的私有方法,可以将实现文件中的声明放在@implementation block之前。

<pre><code>
\#import "MyClass.h"

@interface MyClass (PrivateMethods)

// method declarations

@end

@implementation MyClass

// method definitions

@end

</pre></code>

实现

如果使用类别来声明自定义类的私有方法,可以在类的 @implementation block中添加实现。如果使用类别来扩展一个没有源代码的类或者分发实现自定义类,可以在名为+CategoryName.m 文件中添加实现。实现和其他一样,导入自己的接口。类别的实现如下:
<pre><code>
\#import "SystemClass+CategoryName.h"

@implementation SystemClass ( CategoryName )

// method definitions

@end

</pre></code>

官方原文地址:

https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Category.html

相关文章

  • 翻译:类别(Category)

    使用类别不通过子类的方法,为已经存在的类定义额外的方法,即使这个类的源代码对你不可用。通常使用类别将方法添加到已经...

  • Category

    Category基本概念 1.什么是Category Category有很多种翻译: 分类 \ 类别 \ 类目 (...

  • 3 Category分类(OC)

    1 Category定义: Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类) Catego...

  • Objective-C基础学习之Category基本概念和注意事

    1.什么是Category Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类) Catego...

  • Category和类扩展

    1.什么是Category Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类) Catego...

  • iOS 类别Category和类拓展Extension的使用与区

    1. 类别Category和类拓展Extension的区别 1>.类别(Category) 类别(Category...

  • iOS之category

    category :有翻译为分类,有翻译为类别,个人感觉这种翻译多多少少有些误导,所以我就不翻译了,直接喊英文 c...

  • 类别Category

    通过使用范畴(Category),程序员可以为任何已有的类添加方法。以NSString为例,虽然没有NSStrin...

  • Category类别

    #pragma mark - 类别是对原有类进行扩展 NSString+FilePath.h —>类名+类别名.h...

  • category(类别)

    category相关网站点击是现有的类添加的方式 比继承更为简洁的方法来对类进行扩展 不用子类添加新方法 就能为现...

网友评论

    本文标题:翻译:类别(Category)

    本文链接:https://www.haomeiwen.com/subject/ebnsdttx.html