文档章节

第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
self.name&&&&_name一样&&&零碎知识点

不一样的 1.self.name 是一个方法 是setter或者getter方法 2.self.name 实现的时候考虑内存管理 3.kvo可以监听到 name只是一个普通的变量而已 --------------------------------------------...

走向未来
2015/10/24
29
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
29分钟前
2
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
54分钟前
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部