iOS开发 Category介绍

Category(类别)是一种为现有的类添加新方法的方式。

创建Category

Category的代码一般是放在独立的文件中,文件的命名通常是“类名称+类别名称”的风格,使用Xcode可以帮你快速建立类别的文件:File-->New-->File-->Objective-C File,将File Type改为Category,并输入类名和类别名,点击Next即可(Xcode 6)。

#import <Foundation/Foundation.h>

@interface NSString (myCategory)

@end

以上就是创建了名为myCategory的NSString类别的@interface部分。

使用Category

你可以在其中列出你要添加的方法,也可以添加属性,但是不能添加实例变量,而且属性必须是@dynamic(要自己实现setter和getter方法)。你需要在类别的@implementation部分实现自己的方法。例如:

#import <Foundation/Foundation.h>

@interface NSString (myCategory)

+ (NSUInteger)lengthOfString:(NSString *)string;

@end


#import "NSString+myCategory.h"

@implementation NSString (myCategory)

+ (NSUInteger)lengthOfString:(NSString *)string
{
    return [string length];
}

@end


#import <Foundation/Foundation.h>
#import "NSString+myCategory.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSUInteger length = [NSString lengthOfString:@"hello world!"];
        NSLog(@"%d",(int)length);
    }
    return 0;
}
运行结果:

2015-04-18 16:54:32.183 category[7100:221796] 12


Category的缺陷

类别有两个局限性:

  1. 无法向Category中添加实例变量,Category中没有空间容纳实例变量;
  2. 名称冲突。Category中的方法可以与现有方法重名,而Category中的方法优先级更高,会导致原有的方法不再可用,可以向类别方法名添加前缀来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值