Look

iOS - Category 和Extension的区别

2021-04-30  本文已影响0人  码代码的小马

iOS Category

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

#import 
@interface NSObject (Category)
- (void)myMethod;
@end
Category的注意点
@interface AppDelegate (Share)

/// 注册ShareSdk
- (void)registerShareSdk;

@end
使用Category(类别/分类)

iOS Extension

@interface MineViewController ()<UITableViewDelegate>

@property (nonatomic, strong) BaseTableView *tableView;

@end

@implementation MineViewController
@end

当需要声明一个属性,它对外是只读的,但是在内部是可以修改的,这时可以通过Extension来实现

Category 和Extension的区别

  • Category是运行时决定生效的,Extension是编译时就决定生效的
  • Category可以为系统类添加分类,Extension不能
  • Category是有声明和实现,Extension直接写在宿主.m文件,只有声明
  • Category只能扩充方法,不能扩充成员变量和属性
  • 如果Category声明了声明了一个属性,那么Category只会生成这个属性的set,get方法的声明,也就不是会实现
上一篇 下一篇

猜你喜欢

热点阅读