在自定义类中,既可以在.h文件中声明属性,也可以在.m文件中声明属性。在.h文件中声明的属性可以供外部调用,称为公共属性;在.m文件中声明的属性,即该类扩展中声明的属性,只能在该类的实现部分使用,称为专有属性。
1、定义专有属性
在类实现的.m文件中,可以定义供类内部使用的专用属性。
#import "MyPropertyClass.h"
@interfaceMyPropertyClass()
@property(nonatomic,copy)NSString*firstName;
@property(nonatomic,copy)NSString*lastName;
@end
2、专有属性懒加载
使用懒加载的方式,初始化两个属性。
/**
* firstName懒加载
* @return firstName
*/
-(NSString*)firstName{
if(_firstName==nil){
_firstName=[NSStringstringWithFormat:@"www."];
}
return_firstName;
}
/**
* lastName懒加载
*
* @return lastName
*/
-(NSString*)lastName{
if(_lastName==nil){
_lastName=[NSStringstringWithFormat:@"hcios.com"];
}
return_lastName;
}
3、定义公共属性
在类定义的.h文件中,定义供外部调用的公共属性。
#import
@interfaceMyPropertyClass:NSObject
@property(nonatomic,copy)NSString*name;
@end
4、公共属性懒加载
在.m文件中,使用懒加载初始化公共属性。在懒加载中,使用点语法获取firstName以及lastName属性的值,并进行拼接。
/**
* name公共属性懒加载,拼接firstName与lastName
*
* @return name
*/
-(NSString*)name{
if(_name==nil){
self.firstName=[self.firstName stringByAppendingString:self.lastName];
_name=self.firstName;
}
return_name;
}
5、main()中打印公共属性
在外部只能打印公共属性,不能打印专用属性。
#import
#import "MyClass.h"
#import "MyConst.h"
#import "MyPropertyClass.h"
intmain(intargc,constchar*argv[]){
@autoreleasepool{
MyPropertyClass*properyClass=[[MyPropertyClassalloc]init];
NSLog(@"初始值:%@",properyClass.name);
properyClass.name=@"宏创学院";
NSLog(@"最新值:%@",properyClass.name);
}
return0;
}
运行结果: