12.1类扩展

2020-10-09  本文已影响0人  ChaosHeart

1.类扩展

可以添加属性和方法,在编译时写入ro数据段中

(1)找到read_images()方法,加载镜像


截屏2020-09-29 17.04.45.png

(2)在此处打个断点,查看ro里面的数据


截屏2020-09-29 17.05.00.png
截屏2020-09-29 17.05.11.png
截屏2020-09-29 17.05.38.png
截屏2020-09-29 17.05.49.png
截屏2020-09-29 17.06.02.png

(3)可以看到此时ro里面可以找到方extM_method方法和nName属性,证明类扩展在编译时就执行了,将数据写入了ro中.

2.实例

类扩展:

#import <AppKit/AppKit.h>
#import "LGPerson.h"

NS_ASSUME_NONNULL_BEGIN

@interface LGPerson ()
@property (nonatomic, copy) NSString *ext_name;
@property (nonatomic, copy) NSString *ext_subject;

- (void)extH_method;
@end

NS_ASSUME_NONNULL_END

类.h文件:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface LGPerson : NSObject
@property (nonatomic, copy) NSString *name;
@end

NS_ASSUME_NONNULL_END

类.m文件:

#import "LGPerson.h"
#import "LGPerson+LGExtension.h"

@interface LGPerson ()
@property (nonatomic, copy) NSString *mName;

- (void)extM_method;

@end

@implementation LGPerson

+ (void)load{
    NSLog(@"%s",__func__);
}

- (void)extM_method{
    NSLog(@"%s",__func__);
}

- (void)extH_method{
    NSLog(@"%s",__func__);
}

@end

3.注意

创建了类扩展以后,要将类扩展引入类中


截屏2020-09-29 17.08.58.png
上一篇 下一篇

猜你喜欢

热点阅读