分类机制通常用于向无源码的既有类中新增功能。这样容易产生一个问题,在运行期系统加载分类时,会将分类中实现的每个方法直接添加到类的方法列表中,如果类中本来就有此方法,而分类又实现一遍,那分类的方法会覆盖之前的实现代码,可能发生很多次覆盖,以最后一个覆盖的分类为准。
解决分类方法的覆盖问题:一般是以命名空间来区别各个分类的名称与其中定义的方法。就是给分类名称与分类中的方法前都加上某个共用的前缀。
某个类的分类中加入方法,那么应用程序中,该类的每个实例变量均可调用这些方法。
#import <Foundation/Foundation.h>
@interface NSString (HTTP)
- (NSString *)urlEncodedString;
- (NSString *)urlDecodedString;
@end
加前缀
#import <Foundation/Foundation.h>
@interface NSString (ABC_HTTP)
- (NSString *)abc_urlEncodedString;
- (NSString *)abc_urlDecodedString;
@end
网友评论