一,概念
为了管理某个成员变量不让外界访问,也为了更好的管理内存,就须要用set方法把它封装起来。另外当你须要输入一个值时,比如:年龄,这些没有负数的值,所以要过滤掉负数。达到保护数据,内存不容易泄漏。
二,set的命名规范
set方法以减号开头,它没有返回值
set后面跟的字须要大写
形参的数据类型和成没变量的一样,形参名称不能和成员变量然一样,所以加下划线区分开。
这时候可以封装起来,故就不用@public
get 方法
一,概念
如果只看看,不修改的话,这时就只用到get方法。返回对象是内部成员。
二,命名规范
苹果官方规定不能以get开头,方法名,数据类型都和成员变量一样。
使用场合:
须要封装的时候
只须要看,不须要改时。
下面通过例子来说明一下
设计一个类,计算C,OC语言的总分,平均分。
#import <Foundation/Foundation.h>
@interface Score : NSObject
{
int _cScore; // C语言成绩
int _ocScore; // OC成绩
int _totalScore;// 总分
int _averageScoe; // 平均分
}
- (void)setCScore:(int)cScore;
- (int)cScore;
- (void)setOcScore:(int)ocScore;
- (int)ocScore;
- (int)totalScore;
- (int)averageScore;
@end
@implementation Score
- (void)setCScore:(int)cScore
{
_cScore = cScore;
_totalScore = _cScore + _ocScore;
_averageScoe = _totalScore/2;
}
- (int)cScore
{
return _cScore;
}
- (void)setOcScore:(int)ocScore
{
_ocScore = ocScore;
_totalScore = _cScore + _ocScore; //总分和平均分封装到set里,下次改C或OC成绩这里会自动改
_averageScoe = _totalScore/2;
}
- (int)ocScore
{
return _ocScore;
}
- (int)totalScore
{
return _totalScore;
}
- (int)averageScore
{
return _averageScoe;
}
@end
int main()
{
Score *s = [Score new];
[s setCScore:90];
[s setOcScore:100];
[s setCScore:80];
int a = [s totalScore];
NSLog(@"总分:%d", a);
return 0;
}