前言
其实属性这个之前有写过,不过侧重点不同,这次按照属性和实例变量的关系来梳理,整理自程序员说。
一、property是什么
字面意思来看呢,property有属性的意思。
@property声明属性的语法,它可以快速方便的为实例变量创建存取器,并允许我们通过点语法使用存取器。
用个好多人用的等式就是@property = ivar + setter + getter;
- ivar是实例变量。
- setter 是设置实例变量的存取器。
- getter 是获取实例变量的存取器。
二、实例变量、setter、getter
直接上代码吧
定义如下
{
//实例变量最好以_开头
NSString *_car;
NSString *_bus;
}
//定义
//setter
- (void)setCar:(NSString *)carName;
//getter
- (NSString *)car;
//setter
- (void)setBus:(NSString *)busName;
//getter
- (NSString *)bus;
实现如下
//实现
- (void)setCar:(NSString *)carName
{
_car = carName;
}
- (NSString *)car
{
return _car;
}
- (void)setBus:(NSString *)busName
{
_bus = busName;
}
- (NSString *)bus
{
return _bus;
}
应用如下
Test1ViewController *vc = [Test1ViewController new];
[vc setCar:@"甲壳虫"];
[vc setBus:@"祥龙公交"];
NSLog(@"car is %@, bus is %@",[vc car],[vc bus]);
效果如下
textview[5598:1451791] car is 甲壳虫, bus is 祥龙公交
可以看到我们定义了两个实例变量,通过set和get进行存取,模拟的@property的实现方式,不过@property的使用更加简单。
@property的简单应用
书接上回,同样功能,代码如下
定义如下
@property (nonatomic,strong) NSString *car;
@property (nonatomic,strong) NSString *bus;
使用如下
test2ViewController *vc2 = [test2ViewController new];
vc2.car = @"奥拓";
vc2.bus = @"手扶拖拉机啊";
NSLog(@"car is %@ , bus is %@",vc2.car,vc2.bus);
效果如下
textview[5637:1456619] car is 奥拓 , bus is 手扶拖拉机啊
恩确实简单很多,点语法没啥说的,属性声明之前也有,恩就是这样的,当然了setter和getter也都是可以重写的,一般都是重写getter吧。这个之前也写过。
网友评论