-
背景:
- 由于開發(fā)中經(jīng)常需要定義一些方法來操作成員變量,而每個(gè)方法都必須有一個(gè)有意義的名稱,而想名字非常難,所以就有了getter-setter方法
- getter-setter方法格式和寫法都是固定的,所以只要有g(shù)etter-setter方法就不用煞費(fèi)心思的去想方法名稱了,解決了起名字難問題
- 并且getter-setter方法還是程序員之間的一種規(guī)范,以后別人只要想給屬性賦值立刻就會(huì)想到getter-setter方法,這樣降低了程序員之間的溝通成本
setter方法
- 作用: 設(shè)置成員變量的值
-
格式:
- 1.setter方法一定是對(duì)象方法
- 2.一定沒有返回值
- 3.一定以set開頭, 并且set后面跟上需要設(shè)置的成員變量的名稱去掉下劃線, 并且首字母大寫
- 4.一定有參數(shù), 參數(shù)類型一定和需要設(shè)置的成員變量的類型一致, 并且參數(shù)名稱就是成員變量的名稱去掉下劃線
getter方法:
- 作用: 獲取成員變量的值
-
格式:
- getter方法一定是對(duì)象方法
- 2.一定有返回值, 而且返回值一定和獲取的成員變量的類型一致
- 3.方法名稱就是獲取的成員變量的名稱去掉下劃線
- 4.一定沒有參數(shù)
Person.h文件中代碼示例
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age; //年齡
}
// setter方法
- (void)setAge:(int)age;
// getter方法
- (int)age;
Person.m文件中代碼示例
#import "Person.h"
@implementation Gun
- (void)setAge:(int)Age;
{
//成員變量以下劃線開頭的好處,就是可以區(qū)分局部變量和成員變量
_size = size;
}
- (int)size
{
return _size;
}
點(diǎn)語法
- 背景: 如果給屬性提供了getter和setter方法, 那么訪問屬性就又多了一種訪問方式 , 點(diǎn)語法
- 本質(zhì): 點(diǎn)語法其實(shí)它的本質(zhì)是調(diào)用了我們的setter和getter方法
- 編譯器的特性: 點(diǎn)語法是一個(gè)編譯器的特性, 會(huì)在程序翻譯成二進(jìn)制的時(shí)候?qū)?語法自動(dòng)轉(zhuǎn)換為setter和getter方法
- 如果點(diǎn)語法在=號(hào)的左邊, 那么編譯器會(huì)自動(dòng)轉(zhuǎn)換為setter方法
- 如果點(diǎn)語法在=號(hào)的右邊, 或者沒有等號(hào), 那么編譯器就會(huì)自動(dòng)轉(zhuǎn)換為getter方法
- 如果某一個(gè)屬性只提供了getter方法, 沒有提供setter方法, 我們稱這個(gè)屬性為只讀屬性
其他:只有setter——只寫屬性; setter、getter都有——可讀可寫; 都沒有——私有。