【学习笔记】【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声明的成员属性就不是一个成员属性了,是另外一个实例变量,而这个实例变量需要手动声明