属性property介绍:2-公共属性与专有属性

在自定义类中,既可以在.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;

}

运行结果:

你可能感兴趣的:(属性property介绍:2-公共属性与专有属性)