oc学习初期,想必大家都在头文件中声明变量,然后自己去设置这些变量的属性的setter与getter吧,如果是学习Java出身的童鞋一定不会忘了在eclipse中自动设置setter与getter方法吧!哈哈,那么,oc中有没有什么方案让我们也像Java一样不用我们去设置,直接去使用呢?答案是肯定的,也许oc是方便学习其他语言的同学转向oc语言,特地为他们设置的一个语法格式—-点语法。
在oc中定义setter与getter其实是有严格要求的,如下:
setter和getter
【setter】set方法,用于给成员变量赋值,
如-(void)setHeight:(int)heightNew
原因:为了防止别人给你的成员变量乱赋值,
函数规范:
1.没有返回值
2.命名规范方法名必须以set开头,后面跟上成员变量的名称.
3.成员变量的名称首字母必须大写,
【getter】get方法,用于返回成员变量的值,如height
- (int)height
原因:别人想看到我们的成员变量,但是我们又不想让他乱改我们的成员变量
函数规范:
1.有返回值
2.值的类型就是成员变量的类型一样
3.方法名和成员变量名一样
参数规范:1.一定要有一个参数,而且和成员变量类型一致,
2.参数名和成员变量名不能一致
点语法的使用格式如下:
//
// Dog.h
// 点语法
//
// Created by qianfeng on 15/8/6.
// Copyright (c) 2015年 Lee. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Dog : NSObject{
int _age;
}
//-(void) setAge:(int) newAge;
//
//-(int) age;
@property int age;
@end
//
// Dog.m
// 点语法
//
// Created by qianfeng on 15/8/6.
// Copyright (c) 2015年 Lee. All rights reserved.
//
#import "Dog.h"
@implementation Dog
@synthesize age = _age;
//该行等于以下的六行
//-(void) setAge:(int) newAge{
// _age = newAge;
//}
//
//-(int) age{
// return _age;
//}
@end
在使用点语法的时候记住一点,如果出现在赋值左边也就是 Dog.age = 21; 指的是赋值,如果出现在赋值右边也就是 int age = Dog.age; 指的是取值。
注意:
点操作不是使用成员变量,是调用成员方法