Objective-C基础1-类目(Category)和延展(Extension)的区别

Objective-C基础1-类目(Category)和延展(Extension)的区别



类目也叫分类,主要作用是为没有源代码的类添加方法。

通过类目添加的方法会成为原类的一部分。从而达到扩展一个类的功能。


NSString+Addition.h文件

#import <Foundation/Foundation.h>
//类目的接口部分(声明添加的方法)
//不能添加实例变量

//子类可以继承父类所有的方法,包含Category中的方法
//类目包含两部分:接口部分、实现部分
//类目中添加的方法属于类的一部分
//类目中的方法的优先级高于类中定义的方法
//(类目中的方法与类中的方法重名了的时候,原方法会被覆盖)
@interface NSString (Addition)
- (void) test;
@end

NSString+Addition.m文件

#import "NSString+Addition.h"

@implementation NSString (Addition)
- (void) test{
    NSLog(@"test!NSString中添加的方法!");
}
@end




类的延展

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
-(void) sayHi;
@end

Person.m

#import "Person.h"
//Person类的延展--体现封装-类的延展写在类的实现文件中 .m文件中
//延展是给有源代码(有.m文件)的类使用的
//延展只有接口部分,没有实现部分。延展是用于管理实例变量和“私有”方法的
//在延展中声明的方法,在类的实现部分进行实现
@interface Person ()
{
    //类的内部需要使用,但是不想对外公开的
    NSString * _name;
    NSString * _gender;
}
//仅在类的内部使用,不提供给类的外部使用
- (void) introduce;
//声明私有方法时,可以使用前缀,作为区分
//不要以下划线开头- (void) _test; //苹果自己内部使用
- (void) private_test;
@end

@implementation Person
-(void) sayHi{
    NSLog(@"hi");
}
- (void) introduce{
    NSLog(@"my introduce");
}

@end






著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值