用Category来扩展一个类

想要给一个类添加方法和行为,但不想创建一个全新的子类。

 

在Objective-C中,可以用categories来定义并实现属性和方法,之后再将它们附加到一个类上。

 

假设你想要扩展NSString类,给它加一些方法来帮助你创建HTML文本。那么这个category头文件就会看起来像这样:

@interface NSString (HTMLTags)

在@interface关键字后的类名就是正要扩展的类。这意味着此category可能只能被运用到NSString或NSString的子类。类名后的括号中的HTMLTags就是category的名字。

 

The implementation follows a similar pattern.

@implementation NSString (HTMLTags)

 

以后要用时,导入category的头文件就可以了。

 

The Code
Listing 1-13. HTMLTags.h
#import <Foundation/Foundation.h>
 
@interface NSString (HTMLTags)
 
-(NSString *) encloseWithParagraphTags;
 
@end

 

Listing 1-14. HTMLTags.m
#import "HTMLTags.h"
 
@implementation NSString (HTMLTags)
 
-(NSString *) encloseWithParagraphTags{
        return [NSString stringWithFormat:@"<p>%@</p>",self];
}
 
@end

 

Listing 1-15. main.m
#import "HTMLTags.h"
 
int main (int argc, const char * argv[]){
        @autoreleasepool {
                NSString *webText = @"This is the first line of my blog post";
 
                //Print out the string like normal:
                NSLog(@"%@", webText);
 
                //Print out the string using the category function:
                NSLog(@"%@", [webText encloseWithParagraphTags]);
        }
        return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值