@interface UIView (Category)
@property (nonatomic, assign) CGFloat top;
- (void)setMyMethod;
@end
#import "UIView+Category.h"
@implementation UIView (Category)
- (void)setMyMethod {
self.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255. green:arc4random() % 256 / 255. blue:arc4random() % 256 / 255. alpha:arc4random() % 256 / 255.];
}
- (void)setTop:(CGFloat)top {
self.top = top;
}
- (CGFloat)top {
return self.frame.origin.y;
}
@end
1.Category 可以修复一些已知的bug,例如:引入一个三方 知道那个方法crash,可以重写那个method(优先级高于父类的方法)
2.Category 可以添加一些方法 但是方法必须有实现,否则当调用方法的时候会crash
3.可以添加一些属性例如view.left view.right 等等但是不能添加实力变量
多继承的实现方法
消息转发 delegate和protocol 类别
extension一般在implementation的上方 创建一些私有的属性方法 实例变量 以及方法(必须实现)