1.实例变量可见度
2.为什么不使⽤@public?
1、使⽤@public关键字,暴露了类内部的细节。
2、不符合⾯向对象语⾔的三⼤特性之⼀ — 封装
3.OC中的⽅法分两种:
类⽅法和实例⽅法。
类⽅法:只能类使⽤,例如:+(id)alloc 注:类⽅法中不能使⽤实例变量
实例⽅法:只能对象使⽤,例如: -(void)sayHi
4.方法名
首先把方法名删掉再删除返回值类型 还删除参数类型及参数名删完 就是这个方法的方法名
注意: ": "表示有参数不能删除 有":"必有参数
5 setter 和 getter
在OC⾥,为实例变量赋值的⽅法称作setter (设置器)。
读取实例变量值的⽅法称作getter(访问器)
⽆论setter还是getter内部操作的是实例变量
每⼀个实例变量都需要⼀对setter和getter⽅法。
OC⾥规定了setter和getter的书写格式:
如果⼀个实例变量是int age;或者int _age;
setter的书写格式如下:- (void)setAge:(int)age;即set+⾸字⺟⼤写的实例变量名(忽略下划线)。
getter的书写格式如下: - (int)age;即返回值类型与变量类型⼀致,⽅法名与实例变量名相同(忽略下划线)
6 是否需要导入头文件:
6.1 导⼊头⽂件,即:导⼊头⽂件中的内容到当前类。
#import “”导⼊⾃定义类,
#import <>导⼊类库中的头⽂件。
功能类似C语⾔中的#include,但是可以避免头⽂件被重复导⼊。
容易出现循环导⼊头⽂件问题。
6.2 使用向前声明能够有效避免嵌套循环导⼊:
告诉编译器@class后的字符串作为类名使⽤,并未导⼊类的接⼝内容。
7 自定义初始化方法:
8 小结:
实例变量有3种常⻅的可⻅度:@public、@protected、@private。
@public违背了封装特性,⾯向对象开发中很少使⽤;
@protected默认可⻅度,⾃⼰和⼦类中能使⽤—>访问实例变量;
@private⾃⼰类中能使⽤—>访问实例变量。
⽅法是OC的核⼼,采⽤消息机制:[receiver message]。
“-”message由对象来调⽤;
“+”message由类来调⽤。