文档章节

第03天OC语言(03):geeter-setter方法练习

lyh2017iOS
 lyh2017iOS
发布于 2017/07/13 11:18
字数 732
阅读 1
收藏 0
  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

getter\setter方法 进一步了解

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

适合所有人,不需要懂的什么 ######注:(小白直接上手)


#####一、本章笔记

setter 方法的另一个好处, 可以监听属性的变化

#####二、code ######main.m

Main.m
#pragma mark 03-geeter-setter方法练习
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
/*
 设计一个K线类, 有三个属性,最高价格,最低价格,平均价格,要求可以设置和获取这三个属性
 */
#import "KLine.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    
    KLine *line = [KLine new];
    [line setMax:200];
    [line setMin:100];
    
    NSLog(@"max = %i, min = %i, arerage = %i",[line max],[line min],[line average]);
    
    [line average]; // 如果直接 返回 (max + min) / 2 计算平均值,会影响性能, 直接修改setter方法的时候 直接赋值即可
    [line average];
    [line average];
    [line average];
    [line average];
    [line average];

    return 0;
}

######Kline

>>>.h
#import <Foundation/Foundation.h>

@interface KLine : NSObject
{
    int _max;       // 最高价格
    int _min;       // 最低价格
    int _average;   // 平均价
}

#pragma mark getter / setter 方法
/* 
 setter方法 :
 1.移动是对象方法
 2.一定没有返回值
 3.方法名称 一定以 set开头,后面跟上需要设置的属性的名称 去掉下划线,然后首字母大写
 4.一定有参数,参数类型 和 需要设置的属性类型 一致,并且参数名称 就是属性名称 去掉下划线
 */

- (void)setMax:(int)max;
- (void)setMin:(int)min;
- (void)setAverage:(int)average;

/*
 getter方法 : 
 1.一定是对象方法
 2.一定有返回值,返回值类型 一定 和属性类型一样
 3.方法名称 就是属性名称 去掉 下划线
 4.一定没有参数
 */

- (int)max;
- (int)min;
- (int)average;


#warning 注意点
/*
    如果某一个属性 只提供了getter方法 ,没有提供setter方法, 我们称这个属性为 只读属性
    如果某一个属性 只提供了setter方法 ,没有提供getter方法, 我们称这个属性为 只写属性
    如果某一个属性 同时 提供了 getter 和 setter方法, 我们称这个属性 可读可写属性
    如果某一个属性 没有提供getter 和 setter方法, 我们称这个属性为私有属性
 */

@end
>>>.m
#import "KLine.h"

@implementation KLine

- (void)setMax:(int)max
{
    _max = max;
    // setter 方法的另一个好处, 可以监听属性的变化
    _average = (_max + _min) / 2;
}
- (void)setMin:(int)min
{
    _min = min;
    _average = (_max + _min) / 2;
}
- (void)setAverage:(int)average
{
    _average = average;
}

- (int)max
{
    return _max;
}
- (int)min
{
    return _min;
}
- (int)average;
{
    // 这个地方 有性能问题, 由于最大值 和 最小值 可能没有发生变量, 既然最大值 和 最小值没有发生变化,那么平均值 就不需要重新计算
    // 只有最大值 和 最小值发送变量 才需要重新计算
    
//    return (_max + _min) / 2;
    return _average;
}

@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春
2017/07/19
0
0
IOS,objective_C中用@interface和 @property 方式声明变量的区别

转自http://www.cnblogs.com/letmefly/archive/2012/07/20/2601338.html 一直有疑问,在objective_C中声明变量会有 2种方式,今天有空和网友讨论了下,并且自己查了stackoverflew后算是稍微弄...

AAAAdler
2012/12/28
0
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
iOS 用runtime为分类添加成员变量或属性

关于iOS分类:很多说法是只能添加方法,而不能添加成员变量或属性。有些人可能知道,这种说法是不严谨的,并不是绝对不能添加变量。 解释如下: 我们知道在一个类中用@property声明属性,编译...

卢叁
2017/11/21
0
0
iOS成员属性和成员变量的区别

一、@property 和@synthesizer 在objective-c 1.0中,我们为interface同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 在o...

朝雨晚风
2016/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
40分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
55分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
今天
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
7
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部