(六)@property

前言

其实属性这个之前有写过,不过侧重点不同,这次按照属性和实例变量的关系来梳理,整理自程序员说。

一、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吧。这个之前也写过。

你可能感兴趣的:((六)@property)