首页 > 代码库 > Objective-C 属性
Objective-C 属性
属性定义
@interface Nothin : NSObject
@property NSString *prop;
@end
访问属性
Nothin *nothin = [Nothin new];
//get
[nothin prop];
//set
[nothin setProp: @"Nothin"];
声明了@property后,编译器会自动整合属性的getter和setter
属性的访问方法命名规则:
getter方法和属性名相同, 例如prop 的getter方法名也为prop
setter方法是“set”前缀加上首字母大写的属性名, 例如prop 的setter方法名为 setProp
属性默认是readwrite的,给属性加readonly attribute:@property (readonly) NSString *prop
设置自定义的访问方法:@property (getter = getProp) NSString *prop;
如果同时设置多个attribute,用逗号分隔:@property (ready, getter = getProp) NSString *prop;
访问属性的简洁语法:
//get
NSString *str = nothin.firstName;
//set
nothin.firstName = @"Nothin";
默认情况下,编译器自动为属性封装了一个实例变量,实例变量是属性名加下划线前缀,例如prop属性封装的实例变量为 _prop
可以在类的内部直接访问该实例变量
- (void)Method
{
_prop = @"Nothin";
}
也可让属性封装自定义的实例变量,在.m 文件中,用synthesize关键字。例如:
@synthesize prop = custom_Prop;
如果用@synthesize 却没有给属性指定实例变量名,那么该属性封装的实例变量名就和属性名是一样的,例
@synthesize prop; 这种情况下实例变量的名字也为 prop
如过不想用属性来封装实例变量,也可以在.h或者.m中直接定义实例变量:
@interface Nothin : NSObject
{
NSString *_var;
}