文档章节

第03天OC语言(02):getter-setter方法

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

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

什么是getter setter方法

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

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


#####一、本章笔记

 为什么成员变量要使用 _
     这里就出现 为什么我们之前声明的成员变量要以 _ 开头
     要不然 这里
     size = size;  系统怎么知道那个 size 是 程序员传递进来的形参,那个是类里面的成员变量
 
 
 setter方法 :
     作用 : 设置成员变量的值
     写法 :
     1.setter 方法 一定是对象方法
     2.一定没有返回值
     3.一定以set开头,并且set后面跟上需要设置的成员变量的名称 去掉下划线,并且首字母大写
     4.一定有参数, 参数类型 一定和需要设置的成员变量的类型 一致,并且参数的名称就是成员的名称 去掉下划线
 - (void)setSize:(int)size;

 
 gettet方法 :
     作用 : 获取成员变量的值
     写法:
     1.getter方法 一定是对象方法
     2.一定有返回值, 而且返回值 一定 和获取的成员变量的类型一致
     3.方法名称 就是获取的成员变量的名称 去掉下划线即可
 - (int)size;

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

>>>main.m
#pragma mark 02-getter-setter方法
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类

#pragma mark - main函数
int main(int argc, const char * argv[])
{
    
    return 0;
}

######Gun

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

@interface Gun : NSObject
{
    /*
     由于 将来我们经常需要定义一些方法 操作成员变量,而每个方法都必须有一个有意义的名称,而且想名字非常难,所以一就有了getter/ setter 方法
     getter 和 setter方法 它的格式 和写法 都是固定的,所有只要有 getter - setter方法,
     我们就不用煞费心思的去想方法名称了,解决我们起名字难的问题
     并且 getter - setter 方法 还是程序员之间的一种规范, 以后别人只要想 给属性赋值 立刻就会想到getter - setter方法,这样降低了 程序员之间的沟通成本
     */
    int _bullet;        // 子弹
    int _size;          // 尺寸
    NSString *_model;  // 型号
    int color;          // 颜色
    double _weight;     // 重量
}
- (void)shoot;
// 提供一个方法用于设置成员变量的值
- (void)addBullet:(int)count;
// 提供一个方法 用于 返回成员变量的值
- (int)getBullet;


#pragma mark getter - setter方法 的声明
/*
 setter方法 : 
 作用 : 设置成员变量的值
 写法 : 
 1.setter 方法 一定是对象方法
 2.一定没有返回值
 3.一定以set开头,并且set后面跟上需要设置的成员变量的名称 去掉下划线,并且首字母大写
 4.一定有参数, 参数类型 一定和需要设置的成员变量的类型 一致,并且参数的名称就是成员的名称 去掉下划线
 */
- (void)setSize:(int)size;

/*
 gettet方法 : 
 作用 : 获取成员变量的值
 写法:
 1.getter方法 一定是对象方法
 2.一定有返回值, 而且返回值 一定 和获取的成员变量的类型一致
 3.方法名称 就是获取的成员变量的名称 去掉下划线即可
 */
- (int)size;

@end
>>>.m
#import "Gun.h"
@implementation Gun
- (void)shoot
{
    if(_bullet > 0)
    {
        _bullet--;
        NSLog(@"打了一枪,还剩%i子弹",_bullet);
    }
    else
    {
        NSLog(@"没有子弹");
    }
    
}
- (void)addBullet:(int)count
{
    if (count < 0) {
        count = 0;
    }
    _bullet = count;
}

- (int)getBullet
{
    return _bullet;
}

#pragma mark getter - setter方法 的实现
- (void)setSize:(int)size
{
    /*
     这里就出现 为什么我们之前声明的成员变量要以 _ 开头
     要不然 这里
     size = size;  系统怎么知道那个 size 是 程序员传递进来的形参,那个是类里面的成员变量
     */
    // 成员变量以 下划线开头的好处, 就是可以用于区分 局部变量 和 成员变量
    // 此处的 size 是局部变量 , _size 是成员变量
    _size = size;
}

- (int)size
{
    return _size;
}
@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 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
Swift的setter与getter

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

伟大的鱼
2015/11/11
0
0
self.name&&&&_name一样&&&零碎知识点

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

走向未来
2015/10/24
29
0
iOS成员属性和成员变量的区别

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

朝雨晚风
2016/08/12
0
0
OC语言自学《十一》---- OC(内存管理知识总结)

一、retain、release retain方法给对象的引用计数器+1 release方法给对象的引用计数器-1 retain方法会返回对象本身,release方法没有返回值 dealloc方法 当一个对象要被回收的时候会被调用 ...

罗眯眯
2014/04/06
0
0
iOS基础·属性的修饰词与setter的关系(@property、@synthesize、@dynamic、retain、assign、copy、weak、strong、nonatomic、atomic、readonly、readwrite等修饰词与setter、getter等存取方法之间的关系)

很多人讲属性修饰词的时候,喜欢从字面或者定义的角度介绍它们间的区别。这篇文章,我们侧重从修饰词对setter方法的影响直接展示区别。 1. 实例变量:命名区别于全局变量和局部变量 1.1 命名...

陈满iOS
2017/12/11
0
0
12-Swift中的类

1 类的介绍 Swift也是一门面向对象开发的语言 面向对象的基础是类,类产生了对象 在Swift中如何定义类呢? class是Swift中的关键字,用于定义类 注意: 定义的类,可以没有父类.那么该类是rootCla...

不孤独的美食家
2016/08/10
9
0
OC的@property和@synthesize

成员变量和属性的区别。 @interface User : NSObject { int _height; // 成员变量,不会自动生成setter 和getter方法。 } @property (strong, nonatomic) NSString *uid; // 属性。 会自动生...

我爱觉觉
2015/10/20
29
0
Objective-C Runtime 之动态方法解析实践

作为一种动态编程语言,Objective-C 拥有一个运行时系统来支持动态创建类,添加方法、进行消息传递和转发。利用 Objective-C 的 Runtime 可以实现一些很棒的功能。本篇文章会简单介绍一下消动...

力谱宿云
2016/04/11
670
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OpenMessaging概览

序 本文主要研究一下OpenMessaging 架构图 namespace,类似cgroup的namespace,用来进行安全隔离,每个namespace有自己的producer、consumer、topic、queue等 producer,消息生产者有两类,一...

go4it
5分钟前
0
0
MySQL索引类型

MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引

灯下草虫鸣_
6分钟前
0
0
spring boot2.x设置quartz对一个job顺序执行

背景 使用quartz时,如果一个job的是1分钟,但是执行却要2分钟,quartz默认的是不会等job执行结束后,再执行下一次job,默认是会再开启一个线程执行该次job,这就可能导致一些重复执行的BUG...

EasyProgramming
11分钟前
0
0
iOS定向阴影的探讨

view.layer.shadowColor = [UIColor blackColor].CGColor; view.layer.shadowOpacity = 0.8f; view.layer.shadowRadius = 4.f; view.layer.shadowOffset = CGSizeMake(0,0); ......

RainOrz
23分钟前
0
0
oracle使用jdbc报错Locale not recognized解决方法

在开启数据库连接之前和之后添加时区参数:

源哥L
27分钟前
0
0
django2.0正则表达

re_path("userdetail-(?P<nid>\d+)/",views.user_detail), 解析时用re_path 否则出现not find page

南桥北木
30分钟前
0
0
Mac 安装jd-gui

安装brew 命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 回车 安装jd-gui brew cask install jd-gui......

张欢19933
37分钟前
0
0
占坑

00000000000000000000000000000000000000000000000

钟元OSS
37分钟前
0
0
编程学习读书笔记之jQuery函数应用学习心得(图)

编程学习读书笔记之jQuery函数应用学习心得(图) jQuery.extend() 函数 用于将一个或多个对象的内容合并到目标对象。 1.当提供两个或多个对象给.extend(),对象的所有属性都添加到目标对象(...

原创小博客
39分钟前
0
0
linux 给用户加sudo权限

1、用root帐号登录或者su到root。 2、增加sudoers文件的写权限: chmod u+w /etc/sudoers 3、vim /etc/sudoers 找到 root ALL=(ALL) ALL 在这行下边添加 dituhui ALL=(ALL) ALL (ps:dituhui代...

yeahlife
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部