文档章节

第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
iOS 用runtime为分类添加成员变量或属性

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

卢叁
2017/11/21
0
0
Swift4.0基础知识回顾

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

博行天下
2017/12/06
0
0
iOS成员属性和成员变量的区别

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

朝雨晚风
2016/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部