码迷,mamicode.com
首页 > 移动开发 > 详细

ios 类别和扩展-赵小波

时间:2015-06-12 18:46:29      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

类别

@interface ClassName ( CategoryName )
// method declarations
@end

Category在iOS开发中使用非常频繁尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性

注意事项

 

1:类别是类的扩展,只可以声明方法,不可以声明变量。并且,类别的方法优先级较高,可覆盖原类方法。

 

2:类别的方法中,不可以调用super方法。--类别的局限 

 

3:category 方法不能覆盖于同一class 的其它 category 中的方法。因为不法预知他们的加载优先顺序,就可能在编译时出错。

使用类别:

 

1。对框架提供类的扩展(没有源码,不能修改)。

 

2。 不想生成一个新的子类的情况下,比如对 NSArray 的扩展。

 

3。 方便做项目管理,可以将一份源码在多个地方共享或者做方法版本管理、多人协作开发、用本地版本替换公共版本实现。

扩展:

1:某些情况下,我们需要声明一个@property,它对外是只读的(readonly),而对内是可读写的(readwrite),这时,可以通过Extensions实现

 

@interface BaseClass : NSObject
@property (readonly) NSString *privateString;
@end

// .m
@interface BaseClass()
@property (readwrite) NSString *privateString;
@end

@implementation BaseClass
@synthesize privateString;
//...
@end

2:使编辑器可以更好的验证类的私有的方法或者变量




@interface BaseClass()

- (void)doSomethingPrivate;

@end

@implementation BaseClass
//...
@end
 

 

 

 

ios 类别和扩展-赵小波

标签:

原文地址:http://www.cnblogs.com/sixindev/p/4572091.html

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