扩展(Extension)常被用来和分类(Category)来比较,但实际上两者完全是不一样的的存在;
分类可以看我之前写的iOS-分类(Category)
Extension被开发者称之为扩展、延展、匿名分类.和category不同的是extension不但可以声明方法和属性,还可以声明成员变量。extension一般用于声明私有方法,私有属性,私有成员变量。
在我们的开发中Extension是非常常见的.譬如新建的ViewController的m文件中.
#import "ViewController.h"
//Extension 这里可以申明属性,成员变量,方法
@interface ViewController ()
@end
//
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
@end
扩展(Extension)和分类(Category)最大的区别是
1,扩展申明的属性和方法时私有的,不能被外部调用,而分类声明的是可以被外部调用的;
2,扩展是可以声明成员变量的,而分类是不能声明成员变量的.(分类可以声明属性,但没有对应的成员变量);
3,扩展在编译期间就已经是类的一部分,分类则是在运行时才将分类中申明的属性方法协议等添加到类中;
网友评论