objective-c中成员变量的四个訪问控制符:
@private:仅仅有当前类的内部才干訪问
@public:全部人都可訪问
@protected:仅仅限当前类和它的子类可以訪问
@package:让那些受它控制的成员变量不仅能够在当前类中訪问。也可在同样映像的其它程序中訪问。
什么是“同一映像”?
就是编译后生成的同一框架或同一个运行文件。
即当前框架可以訪问,可是外部程序无法訪问。
(假设是public的话。外部程序也可以訪问)。
|
@private |
@package |
@protected |
@public |
同一类型 |
☑️✓ |
☑️✓ |
✓☑️ |
☑️✓ |
同一映像中 |
|
☑️✓ |
|
☑️✓ |
子类中 |
|
|
☑️✓ |
☑️✓ |
全局范围内 |
|
|
|
✓☑️ |
样例:
接口部分:(FKApple.h)
#import <Foundation/Foundation.h>
@interface FKApple:NSObject
{
//使用@package限制成员变量
@package
double _weight;
}
@end
main部分:
#import "FKApple.h"
int main(int argc, char *argv[])
{
@autoreleasepool{
FKApple *apple = [[FKApple alloc] init];
apple->_weight = 30.4;
}
}