我们在声明类的时候,有实例变量+方法(函数),这些实例变量假设默认的话都是protected类型,一般无法直接訪问。更别提赋值和调用了,所以就产生了两种函数,getter函数就是可以返回实例变量的值,setter函数就是可以设置实例变量的值。(当然假设你把实例变量改成public的话可以直接调用,但不安全)

存取器方法(函数)就是:存——赋值setter函数。取——返回值getter函数。

(1)先在类的.h文件中面声明这个函数(方法)。一般都有默认的格式(例如以下):返回值函数的函数名字一般都和变量同样,如name,sid,age;设置值函数的函数名字一般都是set+变量名(首字母大写)。如setName。setAge,setSid。

    //在ASStudent.h里面声明的函数(方法)
-(void)setName:(NSString *)aName;
-(void)setAge:(int)aAge;
-(void)setSid:(NSString *)aSid;
-(NSString*)name;
-(NSString *)sid;
-(int)age;

(2)在类的.m文件中面设置函数(方法)详细内容。这个非常easy。由于这个函数(方法)实现的功能非常easy(返回值或者设置值的功能)

//设置值就是把形參值传递给实例变量值
-(void)setName:(NSString *)aName{
name=aName;
} -(void)setAge:(int)aAge{
age=aAge;
} -(void)setSid:(NSString *)aSid;{
sid=aSid;
} //返回值就是直接return这个实例变量本身
-(NSString*)name{
return name;
} -(NSString *)sid{
return sid;
} -(int)age{
return age;
}

(3)在main.m里面使用时候能够用函数形式也能够用点形式

//两者同样。以下那个点函数在赋值时,事实上系统还是会调用上面那个函数
[zhang setName:@"tom"];
zhang.name=@"tom"; //两者同样,以下那个点函数在返回值时。事实上系统还会调用上面那个函数
NSLog(@"%@,%d",[zhang name],[zhang age]);
NSLog(@"%@,%d",zhang.name,zhang.age);

所以,至于能够使用点函数来书写,事实上是为了方便程序猿,由于原理。着也是OC近期版本号改进的功能。

【OC学习-8】存取器方法?getter和setter?事实上就是赋值和返回值的两种函数的更多相关文章

  1. 4--OC --合成存取器方法

    1. 从OC 2.0开始就已经可以自动生成设置函数方法和获取函数方法(统称为存取器方法). 什么是 @property 和 @synthesize ? @property 和 @synthesize ...

  2. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  3. JMeter接口测试-提取动态列表最后一个值的两种方法

    前言 在用JMeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.今天我们来学习两种提取动态列表最后一个值的两 ...

  4. 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别

    一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 ...

  5. JavaScript监听手机物理返回键的两种解决方法

    JavaScript没有监听物理返回键的API,所以只能使用 popstate 事件监听. 有两个解决办法: 1.返回到指定的页面 pushHistory(); window.addEventList ...

  6. Activity的跳转及返回值 的四种方法

    Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: ...

  7. 《JS权威指南学习总结--6.6属性getter和setter》

    内容要点: 一.对象属性     对象属性是由名字.值和一组特性构成的.在ES5中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和setter定义的属性称做 ...

  8. 通过编写串口助手工具学习MFC过程——(十)UpdateData()用法和编辑框的赋值、取值

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  9. Java多线程初学者指南(8):从线程返回数据的两种方法

    从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...

随机推荐

  1. 常见bug分析

    变量类型不匹配,形参和实参类型不匹配,隐式类型转换,变量类型赋值不匹配, 工具不熟悉,导致逻辑错误,查看代码,测试驱动开发,完整的测试用例,覆盖所有分支, 变量超出范围,对于大的数据要特别注意, 工具 ...

  2. 人在IT,关于计算机专业的杂谈PPT

  3. Android通过XML来定义Menu

    直接在代码中添加菜单项,给菜单项分组等,这是比较传统的做法,它存在着一些不足.比如说,为了响应每个菜单项,我们需要用常量来保存每个菜单项的ID等.为此,Android提供了一种更好的方式,就是把men ...

  4. MVC5发展历程,从MVC2谈起

    目前,MVC已经发布了5个版本,不包括一些临时的版本,为了更好的了解MVC5,知道MVC的发展历程是非常重要的.本篇随笔主要讲解3个版本的内容及其新特性. 1.MVC 2,发布日期:2010年3月 部 ...

  5. 链接服务器T-sql语句

    https://bbs.csdn.net/topics/230059074 https://www.cnblogs.com/vinsonLu/p/4456027.html 不同服务器数据库之间的数据操 ...

  6. java中锁的理解

    在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...

  7. 【Henu ACM Round#14 C】Duff and Weight Lifting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 2^y可以由两个2^(y-1)相加得到. 则有一个贪心的策略. 就是2^x尽量都变成2^(x+1) (即能够凑就尽量凑) 如果x还有 ...

  8. 关于Java IO InputStream 的一点整理!

    程序的开发其中一直在用文件的读写.可是对于java其中输入流以及输出流仅仅是会用不理解,一直以来想搞清楚其,可是一直没有运行(悲剧).今天早上抽出半个小时通过JDK API1.6.0中文版帮助逐步的了 ...

  9. Python画图工具matplotlib的安装

    今天在机子上安装matplotlib遇到一些问题,特将此记录下来,供大家分享以少走弯路. 1:下载matplotlib 去官网上下载你所须要的版本号http://matplotlib.org/down ...

  10. jquery19 ajax()

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...