【學習筆記】【OC語言】set方法和get方法
1.set方法
作用:用來設置成員變量,可以在方法里面過濾掉一些不合理的值
命名規范:
方法都是以set開頭,而且后面跟上成員變量名,成員變量名的首字母必須大寫
形參名稱不要跟成員變量同名
2.get方法
作用:返回對象內部的成員變量
命名規范:get方法的名稱一般就跟成員變量同名
3.成員變量的命名規范
成員變量都以下劃線 _ 開頭
可以跟get方法的名稱區分開
可以跟其他局部變量區分開,一看到下劃線開頭的變量,肯定是成員變量
*第一種實現方法代碼示例
1 #import <Foundation/Foundation.h>
2 // 聲明
3 @interface Car : NSObject
4 {
5 int _wheels; // 輪子個數
6 }
7 /*set方法*/
8 - (void) setWheels:(int)wheels;
9 /*get方法*/
10 - (int) wheels;
11 @end
12
13 @implementation Car
14 // set方法的實現
15 - (void) setWheels:(int)wheels
16 {
17 // 對外面傳進來的輪子數進行過濾
18 if (wheels<=0)
19 {
20 wheels = 1;
21 }
22
23 _wheels = wheels;
24 }
25
26 // get方法的實現
27 - (int) wheels
28 {
29 return _wheels;
30 }
31 @end
*第二種實現方法代碼實例
@property的時候就已經創建了相應的set和get方法
// Person.h
// get/set方法重寫
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@property NSString * name;
@end
@implementation Person
/*
1. 當想控制外界傳入的一些數據的合理性、安全性的時候我們就需要手動重新get/set方法
*/
- (void)setAge:(int)age
{
_age = age;
if (_age < 0) {
_age = 0;
}
}
/*
2. 當我們手動 同時 實現了get/set方法的時候,property就不會自動給我們生成成員變量
*/
- (int)age
{
return _age; //_age報錯
}
注意??:
- 這里如果只重寫了set或者get方法時候,成員變量_age是正確的,系統不會報錯。但是如果同時重寫了set和get方法,系統就會報錯,說找不到_age這個成員變量。
- 用@property聲明的成員屬性,相當于自動生成了setter getter方法,同時重寫了set和get方法,與@property聲明的成員屬性就不是一個成員屬性了,是另外一個實例變量,而這個實例變量需要手動聲明