文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/13 11:18
字数 732
阅读 1
收藏 0
点赞 0
评论 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
博文 354
码字总数 137380
作品 0
朝阳
JavaScript 30天每日效果图

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

黎跃春 ⋅ 2017/07/19 ⋅ 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

iOS中属性与成员变量的区别

一、类Class中的属性property   在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interfa...

北方人在上海 ⋅ 2015/10/30 ⋅ 0

iOS 用runtime为分类添加成员变量或属性

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

卢叁 ⋅ 2017/11/21 ⋅ 0

Swift4.0基础知识回顾

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

博行天下 ⋅ 2017/12/06 ⋅ 0

iOS中的链式编程

前言 作为iOS开发者,很多人看到这个标题最先想到的可能是Masonry和SnapKit。那么什么是链式编程?为什么有人说Masonry/SnapKit是函数式编程,有人说是链式编程? 其实,函数式编程和链式编程...

01_Jack ⋅ 2017/05/24 ⋅ 0

iOS成员属性和成员变量的区别

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

朝雨晚风 ⋅ 2016/08/12 ⋅ 0

self.name&&&&_name一样&&&零碎知识点

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

走向未来 ⋅ 2015/10/24 ⋅ 0

Swift的setter与getter

最近在公司闲来无事,就在网上找各种项目来学着做,基本都是OC的,然后自己差不多翻译成Swift。可是写着写着的时候发现自己Swift那个蛋疼啊,越来越感觉自己不懂Swift,所以写下一些本菜鸟碰...

伟大的鱼 ⋅ 2015/11/11 ⋅ 0

OC运行时编程指南

OC运行时编程指南 介绍 OC这个语言尽可能的将一些决定从编译和链接时推迟到运行时。它会尽可能的的处理事情。这意味这个语言不仅需要一个编译器,还需要一个运行时系统去执行编译过的代码。这...

charsunny ⋅ 2014/02/18 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部