标签:文件 io re c 代码 public 源代码 return
给一个已有的类添加 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
标签:文件 io re c 代码 public 源代码 return
原文地址:http://www.cnblogs.com/SuuuperPig/p/3865432.html