重学iOS——3.点语法

点语法本来是不需要介绍的,但是还是需要拿出来一点进行强调:点语法的本质是编译器对于setter或者getter方法的完全替换。具体代码如下:
Person.h

//
//  Person.h
//  OC_day3_点语法
//
//  Created by 刘旭辉 on 2017/10/17.
//  Copyright © 2017年 刘旭辉. All rights reserved.
//

#import 

@interface Person : NSObject
{
//    @public
    int _age;
    NSString *_name;
    double _height;
}
-(void)setAge:(int)age;
-(void)setName:(NSString *)name;
-(void)setHeight:(double)height;

-(int)age;
-(NSString *)name;
-(double)height;

-(void)test;
@end

Person.m

//
//  Person.m
//  OC_day3_点语法
//
//  Created by 刘旭辉 on 2017/10/17.
//  Copyright © 2017年 刘旭辉. All rights reserved.
//

#import "Person.h"

@implementation Person

-(void)setAge:(int)age
{
    _age=age;
}
-(void)setName:(NSString *)name
{
    _name=name;
}
-(void)setHeight:(double)height
{
    _height=height;
}

-(int)age
{
    return _age;
}
-(NSString *)name
{
    return _name;
}
-(double)height
{
    return _height;
}
-(void)test
{
    NSLog(@"test");
}
@end

mian.m

//
//  main.m
//  OC_day3_点语法
//
//  Created by 刘旭辉 on 2017/10/17.
//  Copyright © 2017年 刘旭辉. All rights reserved.
//

#import 
#import "Person.h"
int main(int argc, const char * argv[]) {
    Person *p=[Person new];
//    p->_age=25;
//    p->_name=@"lxh";
//    p->_height=1.70;
//    NSLog(@"age=%i,name=%@,height=%f",p->_age,p->_name,p->_height);
    
//    [p setHeight:1.70];
//    [p setName:@"lxh"];
//    [p setAge:25];
//    NSLog(@"name=%@,age=%i,height=%f",[p name],[p age],[p height]);
    
    //点语法,实际是调用了setter和getter方法,但是点语法不是一个编译器的特性,会在程序翻译成二进制的时候将语法自动转换为setter和getter方法
    //如果点语法在等号的左边,系统会自动转换成setter方法
    //如果点语法在等号的右边,或者没有等号,那么编译器就会自动转换为getter方法
    
    //点语法的注意点:
    //点语法一般用于给成员变量赋值,如果不是给成员变量赋值一般情况下不建议使用,但是也可以使用
    p.name=@"lxh";
    p.age=25;
    p.height=1.70;
    NSLog(@"name=%@,age=%i,height=%f",p.name,p.age,p.height);
    
    //###注意此处调用
    p.test;//这个方法被调用了,但是不是getter方法,因为点语法是一种格式替换,见到点语法,就替换成[p test]或者[p setTest:test];所以这种方式被触发了
    return 0;
}

欢迎关注我的个人微信公众号,免费送计算机各种最新视频资源!你想象不到的精彩!


重学iOS——3.点语法_第1张图片
0.jpg

你可能感兴趣的:(重学iOS——3.点语法)