Objective-c - 点语法

/*

 1> 点语法:

    作用:快速调用属性的setter/getter方法.

 

    语法:对象名.去掉下划线的属性名

    赋值则自动调用当前属性的setter方法:对象名.去掉下划线的属性名 = 数据;

    取值则自动调用当前属性的getter方法:对象名.去掉下划线的属性名.

 

 2> 点语法的本质

    点语法在本质上还是调用setter/getter方法.

 

 

 

 如下代码:

    //赋值属性:使用点语法赋值

        xiaoming.name = @"小明";

        xiaoming.age = 18;

    

    编译器在变异的时候,并不是直接赋值,而是将点语法的代码替换为setter/getter方法.

    :

        [xiaoming setName:@"小明"];

        [xiaoming setAge:18];

 

 

    //使用点语法取值

        NSLog(@"大家好!我叫%@,今年%d岁了!", xiaoming.name, xiaoming.age);

 

    编译器在变异的时候,并不是直接赋值,而是将点语法的代码替换为setter/getter方法.

    :

    [xaioming name];

    [xiaoming age];

 

 

 

 

 3> 使用点语法的前提:

    因为点语法在本质上还是调用了setter/getter方法,

    所以使用点语法为属性赋值或取值的的前提是:为属性封装了对应的setter/getter方法,

    而且必须符合规范.因为编译器在编译的时候是按照规范来转换的,

    如果没有为属性封装setter/getter方法,使用点语法就会报错.

 

 

 

 

 */

#import <Foundation/Foundation.h>


#pragma mark -

#pragma mark 人类的声明

@interface YYPerson : NSObject

{

    NSString *_name;

    int _age;

}


- (void)setName:(NSString *)name;

- (NSString *)name;


- (void)setAge:(int)age;

- (int)age;


- (void)sayHi;


@end


#pragma mark -

#pragma mark 人类的实现

@implementation YYPerson


- (void)setName:(NSString *)name

{

    _name = name;

}

- (NSString *)name

{

    return _name;

}


- (void)setAge:(int)age

{

    _age = age;

}

- (int)age

{

    return _age;

}


- (void)sayHi

{

    NSLog(@"大家好!我叫%@,今年%d岁了!", _name, _age);

}


@end


#pragma mark -

#pragma mark main函数

int main(int argc, const char * argv[]) {

    

    //创建人类对象

    YYPerson *xiaoming = [YYPerson new];

    //赋值属性:使用点语法赋值

    xiaoming.name = @"小明";

    xiaoming.age = 18;

    /*

    编译器在变异的时候,并不是直接赋值,而是将点语法的代码替换为setter/getter方法.

    :

    [xiaoming setName:@"小明"];

    [xiaoming setAge:18];

     */

    

    //调用方法

    [xiaoming sayHi];

    

    //使用点语法取值

    NSLog(@"大家好!我叫%@,今年%d岁了!", xiaoming.name, xiaoming.age);

    /*

     编译器在变异的时候,并不是直接赋值,而是将点语法的代码替换为setter/getter方法.

     :

     [xaioming name];

     [xiaoming age];

     */

    

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值