------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 类方法
1) 概述:类方法不需要你创建一个实例。
2) + 表示类方法,就是类调用方法,不依赖于任何对象的方法
3) - 表示实例(对象)方法,只能是对象可调用,依赖于任何对象的方法。
2. 类方法的使用
1) [类名称 类方法名称]
2) 类方法可以和实例方法同名,这个不影响使用。
3) 类方法可以从父类继承而来,子类可以重写类方法
4) 类方法和实例方法一样在interface里声明,在implementation里实现
5) 类方法只能被向类发送类方法消息才被执行,向实例对象发送类方法是不能被触发执行的。
6) 在类方法里使用了self,这个self执行的类对象class object而不是实例对象instance object。
3. 类方法的优点
1) 节省内存空间,不用为创建对象而分配空间
2) 提高了效率,可以直接通过类名来找到调用的方法,而不用通过_isa指针的方式去找到要调用的方法
3) 作为工具方法
4. 类方法易犯错误
1)在类方法中使用了类的成员变量,是不允许的
5. 类方法和对象方法的比较
1) 对象方法
① 以-号开头
② 可以使用成员变量
③ 用对象调用对象方法
④ 对象方法可以调用当前对象或者其他对象的方法(是通过将对象作为参数传入方法)
⑤ 可以使用self
2) 类方法
在类方法中可以调用其他的类方法:
① 可以直接使用本类类名或其他类名调用
② 可以使用self
③ 以+号开头
④ 不可以使用成员变量
⑤ 用类名调用类方法
⑥ 类方法中可以调用对象方法(是通过将对象作为参数传入方法或者创建一个对象)和类方法
⑦ 类方法不能调用自己
6. 类方法应用场景
如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法
7. 匿名类使用
1) 使用匿名类访问实例变量,而且只能访问一次,以后再次访问,实际上是访问新的空间了,new一次就新创建一个空间。
[Car new]->_speed = 100;
2) 使用匿名类,可以调用方法
[[Car new] stop];
3) [[Car alloc] init];等同于[Car new];
8. 匿名类作为方法的参数
1) 优点:可以简化代码,方便方法调用
2) 缺点:匿名对象实例化以后,只能正确的使用成员变量一次
9. 封装
1) setter方法(设置器)
① 方法名必须以set开头
② set方法一定是一个对象方法
③ set后面跟上成员变量的名称去掉下划线,首字母大写,
-(void)setAge:(int)newAge;
④ 返回值一定是void
⑤ 一定要接收一个参数,而且参数类型需要和成员变量的类型一致
⑥ 形参名不能和成员变量名一样
⑦ set方法的形参名,一般是去掉下划线的实例变量名
⑧ set方法中,一定要用形参变量给实例变量赋值
2) getter方法(访问器)
① get方法一定是一个对象方法
② 一定有返回值,返回值的类型和成员变量的类型一致
③ get方法的方法名,是去掉下划线的实例变量名
④ get方法一定没有参数
⑤ get方法的实现中,一定是返回实例变量的值
@interface Person:NSObject
{
NSString*_name;
int_age;
float_height;
}
//set方法的声明
-(void)setName:(NSString *)name;
-(void)setAge:(int)age;
-(void)setHeight:(float)height;
//get方法的声明
-(NSString *)name;
-(int)age;
-(float)height;
@end
@implementation Person
//set方法的实现
-(void)setName:(NSString *)name{
_name= name;
}
-(void)setAge:(int)age{
_age= age;
}
-(void)setHeight:(float)height{
_height= height;
}
//get方法的实现
-(NSString *)name{
return_name;
}
-(int)age{
return_age;
}
-(float)height{
return_height;
}
@end
10. 组合模式简介
1) 定义:把具有相同基类类型对象组合到树形结构中,以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
组合模式使得树形结构中德尔每个节点都具有相同的抽象接口,整个结构可作为一个统一的抽象结构使用,而不暴露其内部表示。每个节点的任何操作,可以通过抽象积累中定义的相同接口来进行。
2) 何时使用组合模式
想把对象抽象成树形结构,具有“部分—整体”的层次关系,想让客户端统一处理组合中的对象
3) iOS中使用组合模式
在Cocoa Touch框架中,UIView对象被组合成一个树形结构,UIView对象可以包含其他的UIView对象。这种组合方式便于用于事件处理和动作消息。
4) 组合模式优缺点
客户端可以统一的使用组合对象或单个对象,而组合结构不暴露其内部表示。
可以很容易在组合体内假如具有相同抽象类型的对象,客户端不必因为加入了新的对象而更改代码。
5) 组合模式(Composite)与装饰模式(Decorator)
Composite模式和Decorator模式虽然逻辑完全不同,但是从类图中可以看到它们有着相似的结构,Composite模式重在构造类,而Decorator模式重在不生成子类即可给对象添加职责。所以两种模式侧重点不一样,Decorator模式重在修饰,而Composite模式重在表示。
11. 依赖关系
1) A对象作为B对象的局部变量或是方法的形参,B依赖于A,这时我们称A与B之间存在一种依赖关系。
2) 面向对象设计:
耦合度:当修改一个对象的时候,对另外一个对象的影响程度
低耦合:当修改一个对象的时候对其他对象影响比较小
高内聚:一个对象仅仅做自己相关的事情
面向对象设计原则:单一职责原则
12. 关联关系
1) 关联关系,HasA关系:当一个对象拥有另外一个对象的时候。
当B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系。
2) 关联关系的耦合度高于依赖关系
13. 方法重载
1) 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
2) OC中没有严格的方法重载,在OC中,方法名不允许相同。
14. OC中static关键字的使用
1) 实例变量不能被static修饰
2) 也不能用static修饰方法
3) 可以用static修饰局部变量,称为静态局部变量,延长生命周期
4) 可以用static修饰全局变量,静态全局变量,只能在当前文件中使用