类扩展

给一个已有的类添加 category

@interface ClassName (CategoryName)

- (NSString *)  Nothin_additionalMmethod;

@end

可以在category中给类添加扩展方法

category通常声明在单独的.h文件中,实现category在一个单独的.m文件中

.h文件的命名规则:ClassName+CategoryName.h

.m文件需要import .h文件

#import "ClassName+CategoryName.h"

@implementation ClassName

- (NSString *) Nothin_additionalMethod

{

  return @"Nothin";

}

@end

为了避免Category中定义的扩展方法出现名字冲突,一般给扩展方法的名字加前缀

 

给类添加扩展方法的另一种方式:Class Extensions

Class Extensions 是在编译是对类进行扩展的,所以只有在原有类的源代码的情况下,才可以定义 Class Extensions

@interface ClassName ()

@property NSString *additionalProp;

@end

Class Extensions 的语法和Category的语法类似,只是括号中没有CategoryName, 所以也可以叫匿名Category

Class Extensions 和Category的区别是,在Class Extensions中可以对原有类扩展属性和实例变量

 

一般情况下@interface中声明的方法和属性都是public的,class extensions可以用来声明一些私有方法或属性,例如可以声明一个property对外是readonly的,对类内部是readwrite的

//.h

@interface ClassName : NSObject

@property (readonly) NSString *prop

@end

 

//.m

@interface ClassName ()

@property (readwrite) NSString *prop

@end

 

@implementation ClassName

...

@end

转载于:https://www.cnblogs.com/SuuuperPig/p/3865432.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值