objective-c中成員變量的四個訪問控制符:
@private:只有當前類的內部才能訪問
@public:所有人都可訪問
@protected:只限當前類和它的子類能夠訪問
@package:讓那些受它控制的成員變量不僅可以在當前類中訪問,也可在相同映像的其他程序中訪問。
什麼是“同一映像”?
就是編譯後生成的同一框架或同一個執行文件。
即當前框架能夠訪問,但是外部程序無法訪問。(如果是public的話,外部程序也能夠訪問)。
@private
@package
@protected
@public
同一類型
???
???
???
???
同一映像中
???
???
子類中
???
???
全局范圍內
???
例子:
接口部分:(FKApple.h)
#import
@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;
}
}