实例变量可以在3处声明:
1 类的@interface处;
2 类的@implementation处
3 扩展extension处
其中,1处声明得实例变量是protected的,2,3处声明得都是private的;另外,property合成的实例变量也是private的。
分类只能访问1处的实例变量,以及扩展处得实例变量。并且为保证能访问扩展处的实例变量,必须让扩展位于类的头文件中:
//扩展在X.h的头文件中 @interface X : NSObject @end @interface X () NSString *name; //分类此时可以访问实例变量name @end