【OC学习-8】存取器方法?getter和setter?其实就是赋值和返回值的两种函数

我们在声明类的时候,有实例变量+方法(函数),这些实例变量如果默认的话都是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文件里面设置函数(方法)具体内容,这个很简单,因为这个函数(方法)实现的功能很简单(返回值或者设置值的功能)

//设置值就是把形参值传递给实例变量值
-(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"];
[email protected]"tom";

//两者相同,下面那个点函数在返回值时,其实系统还会调用上面那个函数
NSLog(@"%@,%d",[zhang name],[zhang age]);
NSLog(@"%@,%d",zhang.name,zhang.age);

所以,至于可以使用点函数来书写,其实是为了方便程序员,因为原理,着也是OC最近版本改进的功能。

时间: 2024-12-11 21:47:12

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

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

我们在声明类的时候,有实例变量+方法(函数),这些实例变量假设默认的话都是protected类型,一般无法直接訪问.更别提赋值和调用了,所以就产生了两种函数,getter函数就是可以返回实例变量的值,setter函数就是可以设置实例变量的值.(当然假设你把实例变量改成public的话可以直接调用,但不安全) 存取器方法(函数)就是:存--赋值setter函数.取--返回值getter函数. (1)先在类的.h文件中面声明这个函数(方法).一般都有默认的格式(例如以下):返回值函数的函数名字一般都

【OC学习-9】利用@property属性和@synthesize简化实例变量的存取器方法

如果我们在一个类中定义了3个实例变量,那么如果要写存取器方法的话,需要写6个(每个实例变量各一个setter和getter).现在的简化方法是: (1)在类的.h文件里,只要写了属性,那么这个实例变量就可以被操作,如果想要不被操作保证安全,那么就不要声明属性,只要写在实例变量里即可. #import <Foundation/Foundation.h> //我们一般会省略实例变量的写法,因为写了属性后,一般会自动生成同名的实例变量 @interface ASStudent : NSObject{

[学习记录]python装饰器、getter、setter

1.装饰器 一般以@开头,后面紧跟着一个函数,例如flask中的url设置就是一种装饰器 2.getter与setter 这里用代码来解释 1 class Student(object): 2 3 @property 4 def score(self): 5 return self._score 6 7 @score.setter 8 def score(self, value): 9 self._score=value 第一个@property将score变成了一个getter,同时允许创建@

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

Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: onCreate()→onStart()→onResume()→onPouse()→onStop()→onRestart()→onStart()→onResume() 启动第二个activity 1.创建new activity 2.创建对应的new xml布局文件 3.在new activity

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

一.筛选没有选中的复选框:not("input:checked") 二.匹配有VARCHAR的字符串:".*VARCHAR.*?" 三.json取值的两种方法 var data={ "show_in_list": 1, "enums": [ { "value": "B2B", "key": "1" }, { "value": &

jQuery返回顶部的两种方法(包括go-top.js)

jQuery实现网页"返回顶部"的功能,相信见到这种效果已经不稀奇了吧;那究竟如何实现呢?方法还是挺多了,先介绍两种简单的: 第一种,只使用jquery插件来实现,下面是一个完整的代码例子,有兴趣的自己摸索吧:前端UI分享 .代码   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi

黑马程序员-OC学习日记-对象与方法、对象与函数

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.NSString类简介 1.NSString是OC中用来表示字符串的一个类 2.NSString类创建 (1)通过字面量方式创建 NSString * str = @"要努力学习!"; (2)通过对象方法创建 NSString * str1 = [NSString alloc]; str1 = [str1 initWithUTF8String:"今天雾霾好大!"

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

内容要点: 一.对象属性 对象属性是由名字.值和一组特性构成的.在ES5中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和setter定义的属性称做 "存储器属性",它不同于 "数据属性",数据属性就是一个简单的值. 当程序查询存取器属性的值时,JS调用getter方法(无参数).这个方法的返回值就是属性存取表达式的值. 当程序设置一个存取器属性的值时,JS调用setter方法,将赋值表达式右侧的值当做参数传入setter

类的方法类型——是否有参数,是否有返回值

package com.hanqi;//包名 public class Car { //public(可以公开访问) class(类) Car(类名 第1个字母大写) //属性 成员变量 //车的颜色 private String Yanse; public String getYanse() {//有返回值,没有参数 return Yanse; } public void setYanse(String yanse) {//无返回值,有参数 Yanse = yanse; } //车的品牌 pr