和C++,Java等面向对象编程语言一样,object-c中对于数据成员可以设定它们的访问权限,它规定了外部实体如何来访问这些资源。例如:
1. 代码:
//Access.h
#import <Foundation/NSObject.h>
@interface Access: NSObject {
@public
int publicVar;
@private
int privateVar;
int privateVar2;
@protected
int protectedVar;
}
@end
//Access.h.m
#import "Access.h"
@implementation Access
@end
//main.m
#import "Access.h"
#import <stdio.h>
int main( int argc, const char *argv[] ) {
Access *a = [[Access alloc] init];
// works
a->publicVar = 5;
printf( "public var: %i\n", a->publicVar );
//compile 错误
//a->protectedVar = 6;
//printf( "protected var: %i\n", a->protectedVar );
//compile 错误
//a->privateVar = 10;
//printf( "private var: %i\n", a->privateVar );
[a release];
return 0;
}
2. 说明:
(1)public可以被外部资源访问,而其它2种方式声明的则不可以;
(2)object-c对于访问权限的声明方式和C++一样,都是在public/protected/private后面加":",再写数据成员。