-
背景:
- 由于開發中經常需要定義一些方法來操作成員變量,而每個方法都必須有一個有意義的名稱,而想名字非常難,所以就有了getter-setter方法
- getter-setter方法格式和寫法都是固定的,所以只要有getter-setter方法就不用煞費心思的去想方法名稱了,解決了起名字難問題
- 并且getter-setter方法還是程序員之間的一種規范,以后別人只要想給屬性賦值立刻就會想到getter-setter方法,這樣降低了程序員之間的溝通成本
setter方法
- 作用: 設置成員變量的值
-
格式:
- 1.setter方法一定是對象方法
- 2.一定沒有返回值
- 3.一定以set開頭, 并且set后面跟上需要設置的成員變量的名稱去掉下劃線, 并且首字母大寫
- 4.一定有參數, 參數類型一定和需要設置的成員變量的類型一致, 并且參數名稱就是成員變量的名稱去掉下劃線
getter方法:
- 作用: 獲取成員變量的值
-
格式:
- getter方法一定是對象方法
- 2.一定有返回值, 而且返回值一定和獲取的成員變量的類型一致
- 3.方法名稱就是獲取的成員變量的名稱去掉下劃線
- 4.一定沒有參數
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;
{
//成員變量以下劃線開頭的好處,就是可以區分局部變量和成員變量
_size = size;
}
- (int)size
{
return _size;
}
點語法
- 背景: 如果給屬性提供了getter和setter方法, 那么訪問屬性就又多了一種訪問方式 , 點語法
- 本質: 點語法其實它的本質是調用了我們的setter和getter方法
- 編譯器的特性: 點語法是一個編譯器的特性, 會在程序翻譯成二進制的時候將.語法自動轉換為setter和getter方法
- 如果點語法在=號的左邊, 那么編譯器會自動轉換為setter方法
- 如果點語法在=號的右邊, 或者沒有等號, 那么編譯器就會自動轉換為getter方法
- 如果某一個屬性只提供了getter方法, 沒有提供setter方法, 我們稱這個屬性為只讀屬性
其他:只有setter——只寫屬性; setter、getter都有——可讀可寫; 都沒有——私有。