OC语言day03-05点语法

pragma mark 点语法

pragma mark 概念

    // 点语法 其实它的本质是调用了 我们的 setter和 getter方法
    // 点语法 是一个编译器的特性, 不是属于OC的语言. 它是编译器特性, 会在程序翻译成二进制的时候 \
    将. 语法 自动转换成 为setter 和 getter方法 \
    如果 点语法 在 =号的左边, 那么系统会自动换成 setter 方法 \
    // 如果 点语法 在=号的右边, 或者没有等号, 那么编译器会 自动转换 为 getter 方法

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
#warning setter 和 getter方法使用
    Person *p = [Person new];
    /*
    // 通过 设置 setter方法可getter方法 也可以给我们的属性 赋值
    p->_age = 24;
    p->_name  = @"lyh";
    p->_height = 1.72;
    
//    NSLog(@"age = %i , name = %@, height = %f",p->_age, p->_name,p->_height);
    NSLog(@"age = %i , name = %@, height = %f",[p age], [p name],[p height]);
    */
#warning 点语法的使用
#warning 如果给属性提供了getter和setter方法,那么方法属性又多了 一种访问方式: (点语法)
    // 点语法 其实它的本质是调用了 我们的 setter和 getter方法
    // 点语法 是一个编译器的特性, 不是属于OC的语言. 它是编译器特性, 会在程序翻译成二进制的时候 \
    将. 语法 自动转换成 为setter 和 getter方法 \
    如果 点语法 在 =号的左边, 那么系统会自动换成 setter 方法 \
    // 如果 点语法 在=号的右边, 或者没有等号, 那么编译器会 自动转换 为 getter 方法
    p.name = @"lys";
//    [p setName:@"lyh"];
    p.age = 27;
    p.height = 1.73;
    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;
}

// set
- (void)setAge:(int)age;
- (void)setName:(NSString *)name;
- (void)setHeight:(double)height;

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

- (void)test;
@end
Person.m
#import "Person.h"

@implementation Person

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

// get
- (int)age
{
    return _age;
}
- (NSString *)name
{
    return _name;
}
- (double)height
{
    return _height;
}

- (void)test
{
    NSLog(@"test");
}
@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大纲 0.OC数据类型 1.声明一个类 2.实现一个类 3.创建一个对象 4.对象的注意点 5.对象方法 6.类方...
    天天想念阅读 1,202评论 0 3
  • 学习目标 1.【理解】对象在内存中的存储 2.【理解】nil和NULL 3.【了解】#pragma mark分组导...
    Hm丶阅读 559评论 0 3
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,307评论 3 38
  • 今天看到一篇不错的文章关于OC内存管理的,转载一下与你共享概述我们知道在程序运行过程中要创建大量的对象,和其他高级...
    niceSYT阅读 518评论 0 2
  • 今日感悟、庆幸自己选择了修车行业:因为这行是技术加服务。 有 技术永远有饭吃、不会恐惧。又是一个重复服务行业,因...
    京心达张新波阅读 272评论 0 0

友情链接更多精彩内容