autoreleasepool 自动释放池
1.池 节约空间 节资源 "共享"。
2.通过自动释放池来管理对象,只需要一个自动释放池,可以管理很多对象,当自动释放池结束的时候,会自动向池中的每个对象都发送release消息。
3.自动释放池是可以嵌套的,会先释放里面的,再释放外面的。
4.工厂方法通常都实现了发送autorelease消息。
三、面向对象的三大特征:封装、继承、多态
1.封装
封装属性和方法放在一个对象中,只给外界公开访问的接口,而且把具体实现隐藏起来。主要目的增加可读性、可维护性、可扩展性。
在OC中,把需要公开的属性、方法定义在声明中,.h文件中interface部分,而把不需要公开的属性、方法定义在.m文件中implementation部分,隐藏起来。
封装的好处:
1)代码结构更清晰
2)可以和第三方合作,但又保护了源代码,避免泄漏。
2.OC中实例变量的处理:
一般情况下,实例变量是不能公开的,所以实例变量应用定义在implementation部分(私有的),除非你需要直接在子类中访问,可以定义在interface部分,可以使用以下语法声明实例变量,来控制实例变量的访问范围。
a.变量的访问范围:
@public 可以在任意位置访问
@package 可以在包内部访问,一个项目一定是在同一个包下。
@protected 可以在本类内部和子类内部访问
@private 只可以在本类的内部分访问
b.默认实例变量修饰符:@protected
c.可以通过"->"可以访问实例变量(但不推荐),通过.语法(属性)来访问实例变量。
3.封装中的方法
a.如果.h文件中,未声明方法,此方法就是私有的,在其它文件中访问该方法是不合法的(必须不能访问)。
b.如果.h文件中,声明方法,此方法就是公有的,在其它文件中可以访问该方法的。
4.继承
a.概念
继承是一种代码复用技术,是类与类之间的一种关系。
A类继承B类,A类中就直接拥有B类中的属性和方法。我们就把A类叫B类的子类(派生类),把B类叫做A类的父类(基类)。
4.继承
b.继承方式
单继承
一个类只能继承一个父类。 爷<-爸<-你
OC Java C#
多继承
一个类可以有多个父类
C++
4.继承
c.继承的语法
@interface 类:父类
(所有类都继承于NSObject)
@end
d.继承是一种关系
继承是类与类之间的关系,是一种"is a"关系。
狗是动物 狗:动物
e.方法的覆盖(重写)
子类对父类继承的方法不满意,可以在子类中重写父类的方法
1)方法名相同
2)参数类型相同
3)返回值类型相同
f.如果重写父类的方法,优先调用子类的方法,如果子类没有重写父类的方法,则调用父类的方法。
一、继承的缺陷
1.提高了程序的复杂度,维护性和扩展性降低
2.破坏类的封装性
二、为什么使用继承
1.代码复用
2.制定规则
3.为了多态
三、组合和*聚合
复用代码更好的方法是组合和聚合,而不是继承。
组合和聚合也是类与类之间的"has a"的关系。
Computer has a cpu.
a.继承 一个对象
b.组合 代码书写习惯
优点:保留了封装性、操作便利 缺点:灵活度不够。
生命周期:Cpu和Computer封装性是独立的,生命周期是一致的,一起存在,一起销毁。高耦合(依赖)在一起。
c.*聚合
保留封装性
优点:灵活度高 缺点:操作欠佳
生命周期:Cpu和Computer生命周期不一致,低耦合,方便Cpu的替换。两个对象,各过各的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |