首页 > 代码库 > 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;

}