setter和getter方法整體聲明和實現雖然后面可以用@property代替,但是在后面的iOS開發中,setter方法或getter方法單獨使用的頻率比較高,應用比較廣泛!
@Interface Person:NSObject { NSString *_name; int _age; Sex _sex; //此處枚舉類型,屬於基本數據類型,不用加“*” float _height; } @end
一、setter方法就是給屬性賦值的方法
書寫格式:
1、在類的聲明中:- (void) +(set+屬性去掉"_",首字母大寫) : (數據類型/對象/類) + (屬性去掉"_");
注意事項:
(1) setter方法一定是對象方法
(2) 一定沒有返回值
(3) 一定以set開頭, 並且set后面跟上需要設置的成員變量的名稱去掉下划線, 並且首字母大寫
(4) 一定有參數, 參數類型一定和需要設置的成員變量的類型一致, 並且參數名稱就是成員變量的名稱去掉下划線
舉例:
- (void) setName: (NSString *)name; - (void)setAge: (int)age; - (void)setSex:(Sex)sex; - (void)setHeight: (float)height;
2、在類的實現中:大括號內可以添加其它內容,但是必須實現 屬性 =(去掉"_"的屬性)
- (void) setName: (NSString *)name{ _name = name; } - (void)setSex:(Sex)sex{ _sex = sex; }
二、getter方法就是獲取成員變量值得方法
書寫格式:
1、類的聲明中 :- (數據類型/對象/類)+(屬性去掉“_”)
注意事項:
(1) getter方法一定是對象方法
(2)一定有返回值, 而且返回值一定和獲取的成員變量的類型一致
(3)方法名稱就是獲取的成員變量的名稱去掉下划線
(4) 一定沒有參數
舉例:
- (NSString *)name;
- (int)age;
- (Sex)sex;
- (float)height;
2、類的實現中:在類的實現中可以添加其它內容,但是必須有 return + 屬性
- (NSString *)name{ return _name; } - (Sex)sex{ return _sex; }
三、其它應用:
1、一個屬性可以只有getter方法, 沒有setter方法, 這種屬性我們稱之為只讀屬性
2、一個屬性也可以只有setter方法, 沒有getter方法, 這種屬性我們稱之為只寫屬性
3、如果既有setter方法又有getter方法, 那么這種屬性我們稱之為可讀可寫的屬性
4、一個屬性也可以沒有getter和setter, 這種屬性我們稱之為私有屬性
5、setter方法和getter方法的聲明和實現可以直接用下面代替(寫在類的聲明里面)
@property(nonatomic,assin)NSString * name;
@property(nonatomic,assin)Sex sex;
