八天学会OC

第03天OC语言(05):点语法

2017-07-20  本文已影响8人  liyuhong
须读:看完该文章你能做什么?

什么是点语法

学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

什么是getter、setter方法


一、本章笔记
 如果给属性提供了getter 和 setter方法,那么访问属性 又多了一种访问方式,点语法
 点语法 其实它的本质 是调用了 我们的 setter 和 getter方法
 点语法是一个编译器的特性, 会在程序 翻译成二进制的时候 将.语法自动转换为 setter 和 getter方法
 如果 点语法在=号的左边,那么编译器会自动转换为 setter方法
 如果 点语法在=号的右边,或者没有等号,那么编译器 就会自动转换为getter方法
 */
/*
 点语法的注意点:
 点语法一般用于给成员变量赋值, 如果不是给成员变量赋值 一般情况下不建议使用,但是也是可以使用的
二、code
main.m
#pragma mark 05-点语法
#pragma mark 概念
/*

 */
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类

#import "Person.h"

#pragma mark - main函数
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
    
    /*
    p->_age = 25;
    p->_name = "lyh";
    p->_height = 1.71;
    NSLog(@"age = %i,name = %@,height = %f",p->_age,p->_name,p->_height);
    */
//    [p setAge:25];
//    [p setName:@"lyh"];
//    [p setHeight:1.71];
//    NSLog(@"age = %i,name = %@,height = %f",[p age],[p name],[p height]);
    
#pragma mark 点语法
    /*
     如果给属性提供了getter 和 setter方法,那么访问属性 又多了一种访问方式,点语法
     点语法 其实它的本质 是调用了 我们的 setter 和 getter方法
     点语法是一个编译器的特性, 会在程序 翻译成二进制的时候 将.语法自动转换为 setter 和 getter方法
     如果 点语法在=号的左边,那么编译器会自动转换为 setter方法
     如果 点语法在=号的右边,或者没有等号,那么编译器 就会自动转换为getter方法
     */
    

    p.name = @"lyh";
    //[ p setName:@"lyh"]
    p.age = 25;
    p.height = 1.71;
    NSLog(@"age = %i,name = %@,height = %f",p.age,p.name,p.height);
    /*
     点语法的注意点:
     点语法一般用于给成员变量赋值, 如果不是给成员变量赋值 一般情况下不建议使用,但是也是可以使用的
     */
    p.test; // [p test];

    return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>

@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
>>>.m
#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
上一篇下一篇

猜你喜欢

热点阅读