【學(xué)習(xí)筆記】【OC語(yǔ)言】set方法和get方法
1.set方法
作用:用來(lái)設(shè)置成員變量蝗茁,可以在方法里面過(guò)濾掉一些不合理的值
命名規(guī)范:
方法都是以set開頭胆屿,而且后面跟上成員變量名况木,成員變量名的首字母必須大寫
形參名稱不要跟成員變量同名
2.get方法
作用:返回對(duì)象內(nèi)部的成員變量
命名規(guī)范:get方法的名稱一般就跟成員變量同名
3.成員變量的命名規(guī)范
成員變量都以下劃線 _ 開頭
可以跟get方法的名稱區(qū)分開
可以跟其他局部變量區(qū)分開扇调,一看到下劃線開頭的變量蹦掐,肯定是成員變量
*第一種實(shí)現(xiàn)方法代碼示例
1 #import <Foundation/Foundation.h>
2 // 聲明
3 @interface Car : NSObject
4 {
5 int _wheels; // 輪子個(gè)數(shù)
6 }
7 /*set方法*/
8 - (void) setWheels:(int)wheels;
9 /*get方法*/
10 - (int) wheels;
11 @end
12
13 @implementation Car
14 // set方法的實(shí)現(xiàn)
15 - (void) setWheels:(int)wheels
16 {
17 // 對(duì)外面?zhèn)鬟M(jìn)來(lái)的輪子數(shù)進(jìn)行過(guò)濾
18 if (wheels<=0)
19 {
20 wheels = 1;
21 }
22
23 _wheels = wheels;
24 }
25
26 // get方法的實(shí)現(xiàn)
27 - (int) wheels
28 {
29 return _wheels;
30 }
31 @end
*第二種實(shí)現(xiàn)方法代碼實(shí)例
@property的時(shí)候就已經(jīng)創(chuàng)建了相應(yīng)的set和get方法
// Person.h
// get/set方法重寫
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@property NSString * name;
@end
@implementation Person
/*
1. 當(dāng)想控制外界傳入的一些數(shù)據(jù)的合理性丐怯、安全性的時(shí)候我們就需要手動(dòng)重新get/set方法
*/
- (void)setAge:(int)age
{
_age = age;
if (_age < 0) {
_age = 0;
}
}
/*
2. 當(dāng)我們手動(dòng) 同時(shí) 實(shí)現(xiàn)了get/set方法的時(shí)候蟀伸,property就不會(huì)自動(dòng)給我們生成成員變量
*/
- (int)age
{
return _age; //_age報(bào)錯(cuò)
}
注意??:
- 這里如果只重寫了set或者get方法時(shí)候蚀同,成員變量_age是正確的,系統(tǒng)不會(huì)報(bào)錯(cuò)啊掏。但是如果同時(shí)重寫了set和get方法蠢络,系統(tǒng)就會(huì)報(bào)錯(cuò),說(shuō)找不到_age這個(gè)成員變量迟蜜。
- 用@property聲明的成員屬性,相當(dāng)于自動(dòng)生成了setter getter方法,同時(shí)重寫了set和get方法,與@property聲明的成員屬性就不是一個(gè)成員屬性了,是另外一個(gè)實(shí)例變量,而這個(gè)實(shí)例變量需要手動(dòng)聲明