码迷,mamicode.com
首页 > 其他好文 > 详细

类扩展

时间:2014-07-24 17:02:05      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:文件   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

类扩展,布布扣,bubuko.com

类扩展

标签:文件   io   re   c   代码   public   源代码   return   

原文地址:http://www.cnblogs.com/SuuuperPig/p/3865432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!