Objective-C编程全解(第3版)[试读]
3.1 继承的概念
本章讲述面向对象中的一个重要概念——继承,使用继承 可以方便地在已有类的基础上进行扩展,定义一个具有父 类全部功能的新类。 3.1 继承的概念 3.1.1 父类和子类 我们在定义一个新类的时候,经常会遇到要定义的新类是某个类的扩展或者是对某个类的修正 这种情况。如果可以在已有类的基础上追加内容来定义新类,那么新类的定义将会变得更简单。 像这种通过扩展或者修改既有类来定义新类的方法叫作继承(inheritance)。在继承关系中,被继 承的类称为父类(superclass),通过继承关系新建的类称为子类(subclass)。 继承意味着子类继承了父类的所有特性... 查看全部[ 3.1 继承的概念 ]
3.2 利用继承定义新类
3.2.1 继承的定义 如果想通过继承为某个类定义一个子类,该怎么办呢? Objective-C 在子类的接口部分声明继承关系。在 2.2节中我们已经说明了如何定义类的接口,这 里再介绍一遍。 定义父类 A 的子类 B 的时候,“类名”是新类 B,冒号后面的“父类名”是需要继承的类 A。 至此为止本书中的父类都使用了 NSObject,这是因为 Objective-C中所有的类都要继承根类, 而 NSObject是 Objective-C中所有类的根类。如果子类有想继承的类,就要直接指明该类为父类,否 则就需要指定 NSObject 为父类。前文中定义 Volume 类的时... 查看全部[ 3.2 利用继承定义新类 ]
3.3 使用继承的程序示例
3.3.1 追加新方法的例子 我们来定义一个带有静音功能的类 MuteVolume。该类只有一个功能,即当收到mute消息时, 设置音量为最小。 类 MuteVolume 的定义非常简单,父类是已经定义好的类 Volume。子类 MuteVolume 除了可以使 用父类 Volume 中定义的所有实例变量和方法之外,还新增加了一个 mute 方法。 代码清单 3-1 文件 MuteVolueme.h-版本 1 #import"Volume.h" @interfaceMuteVolume:Volume/*父类是Volume*/ -(id)mute; ... 查看全部[ 3.3 使用继承的程序示例 ]
3.4 继承和方法调用
3.4.1 使用 self 调用方法 如果想在一个方法中调用当前类中定义的方法,可以利用 self。但如果存在继承关系,通过 self 调用方法时要格外注意。 在图 3-6 的例子中,有三个类 A、B、C。类 A 中定义了 method1、method2 和 method3 三个方法。 类 B 继承了类 A,重写了 method1 和 method3。类 C 继承了类 B,重写了 method2。 假设类 B 的方法 method3 想调用 method1 和 method2,通过 self 调用了 method1 和 method2。我 们来分析一下这个过程中到底哪个... 查看全部[ 3.4 继承和方法调用 ]
3.5 方法定义时的注意事项
3.5.1 局部方法 实现接口声明中的方法时,可把具备独立功能的部分独立出来定义成子方法。一般情况下,这 些子方法都只供内部调用,不需要包含在类的接口中对外公开。 这种情况下,局部方法可以只在实现部分(通常是 .m 文件)中实现,而不需要在接口部分中进 行声明。这样一来,就算其他模块引用了接口文件,也无法获得这个方法的定义,无法调用这个方 法,从而就实现了局部方法。但这里只是说无法从接口中获得这个方法的定义,这个方法本身还是存在的,只要发送了消息,就能够执行。 让我们来看一个简单的例子,类 ClickVolume 是类 Volume 的一个子类,它的主要功能是当音量 发 生... 查看全部[ 3.5 方法定义时的注意事项 ]
专栏:Objective-C 与开源软件
20 世纪 80 年代末,布莱德• 确斯(Brad…Cox)发明了 Objective-C 并创建了公司 Stepstone。后来 NeXT…Software 公司获得了 Objective-C 语言的授权,1996 年苹果公司宣布收购 NeXT 公司,拥有了 Objective-C 语言的所有权。Objective-C 自身的规范是公开的,编译器也是开源的。 NeXTstep 公司的 Objective-C 的编译器是基于 GUN 的 gcc 编译器扩展而来的。后来 NeXTstep 公司又 把这些扩展贡献出来,所以现在的 gcc 是能够编译 Objective-C 程序的。但是 gc... 查看全部[ 专栏:Objective-C 与开源软件 ]
19.1 多线程
本章将说明使用线程进行并行处理的方法。首先会接触一 些基本的线程及锁的相关概念,然后再说明能够高效进行 并行化功能的类 NSOperation 的使用方法。最后介绍可以 在 MacOSX 中使用的连接的概况。 19.1 多线程 19.1.1 线程的基本概念 线程(thread)是进程(process)A 内假想的持有 CPU 使用权的执行单位。一般情况下,一个进程 只有一个线程,但也可以创建多个线程并在进程中并行执行。应用在执行某一处理的同时,还可以 接收 GUI 的输入。 使用多线程的程序称为多线程(multithread)运行。从程序开始执行时就运行的线程... 查看全部[ 19.1 多线程 ]
19.2 互斥
19.2.1 需要互斥的例子 在多线程环境中,无论哪个函数或方法都可以在多线程中同时执行。但是,在使用共享变量时, 或者在执行文件输出或绘图等的情况下,多线程同时执行就可能得到奇怪的结果。 例如,使用整数全局变量 totalNumber 来累加所处理的数据的个数。为了执行下面的加法计算, 在多线程环境中执行该方法会得到什么结果呢? -(void)addNumber:(NSIngeger)n { totalNumber+=n; } 在 OS 功能支持下,线程在运行的过程中会时而得到 CPU 的执行权,时而被挂起执行权,2 个 方法的执行情况如图 19-1 中... 查看全部[ 19.2 互斥 ]
书名: Objective-C编程全解(第3版)
作者: [日] 荻原刚志
出版社: 人民邮电出版社
译者: 唐 璐 | 翟俊杰
出版年: 2014-12
页数: 460
定价: 79.00元
装帧: 平装
ISBN: 9787115377197
