黑马程序员技术交流社区

标题: autoreleasepool 自动释放池 [打印本页]

作者: 谁想去飞    时间: 2014-12-11 22:54
标题: autoreleasepool 自动释放池

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