分类和扩展区别

2020-09-08  本文已影响0人  Queen_BJ
分类

作用
1、声明私有方法
2、分解体积庞大的类文件
3、还可以添加实例方法,类方法,协议,属性(添加getter和setter方法,并没有实例变量,添加实例变量需要用关联对象
特点
为系统类添加方法

扩展(Extension)

Extension:扩展, 匿名分类;放在.m文件中
声明私有属性; (不对子类暴露)
声明私有方法;
声明私有成员变量;

只有.h文件
UIView+ExtensionView.h
ProtocolFile.h

协议
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol ProtocolFile <NSObject>

-(void)ProtocolFile;
@end

扩展
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIView ()

-(void)test;
@property (nonatomic, copy) NSString *colorStr;
+(void)testAdd;

@end

NS_ASSUME_NONNULL_END

控制器调用
#import "ViewController.h"
#import "UIView+ExtensionView.h"
#import "ProtocolFile.h"

@interface ViewController ()

@property (nonatomic, strong) UIView *stringView;
@property (nonatomic, weak) id <ProtocolFile>delagte;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.stringView test];
    [UIView testAdd];
    self.stringView.colorStr = @"hah";
    
    [self.delagte ProtocolFile];
   
}

所以扩展只以声明方式存在,调用是写在.m中的,所以都是私有的。
平时开发中其实用的最多。写在.m中的方法和属性,只有本类能用

分类(Category)和扩展(Extension)区别?
协议 (protocol)

代理(delegate)要用weak,防止循环引用。
代理用weak不用assign原因:

上一篇下一篇

猜你喜欢

热点阅读