第二章 Object-C面向对象部分.ppt
文本预览下载声明
* * IOS提供的消息中心来解决来解决此类问题,让数据模型组件作为消息的生产者,视图组件作为消息的消费者——每当数据模型组件的内部状态数据发生变化时。数据模型组件向中心发送消息。 * * * * * * * * * * * * * * * 和定义类不同,正式的协议不再使用@interface、@implementation关键字,而是使用@protocol关键字 * 和定义类不同,正式的协议不再使用@interface、@implementation关键字,而是使用@protocol关键字 * 和定义类不同,正式的协议不再使用@interface、@implementation关键字,而是使用@protocol关键字 * 和定义类不同,正式的协议不再使用@interface、@implementation关键字,而是使用@protocol关键字 * 和定义类不同,正式的协议不再使用@interface、@implementation关键字,而是使用@protocol关键字 * 8、类的继承与派生 重写父类方法:当子类和父类有同名的方法时,称为方法的重写,子类重写了父类的方法,也可以说覆盖了父类的方法;此时通过子类对象调用的是子类的方法。 8、类的继承与派生 super关键字:如果需要在子类中调用父类被覆盖的实例方法,可以在子类中通过super关键字调用。 9、多态 多态:Objective-C指针类型的变量有两个:一个是编译的类型,一个是运行的类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。 9、多态 10、指针变量强制类型转换与实际类型判断 强制类型转换:强制类型转换只是改变了改指针变量的编译时类型,而该变量所指对象的实际类型并不会发生任何改变 10、指针变量强制类型转换与实际类型判断 指针变量类型判断:为了保证程序的正常运行,一般建议在执行强制转换之前,首先要判定该对象是否为某类,或子类的实例。 1. -(BOOL)isKindOfClass:clazz 判断该对象是否为clazz或子类的实例 2. -(BOOL)isSubclassOfClass:clazz 判断该对象是否为clazz的子类的实例 11、类别与扩展 类别:Objective-C的动态特征允许使用类别为现有的类添加新方法,并且不需要创建子类,不需要访问原有类的代码 @interface 已有类名(类别名) //方法定义部分 @end 1、定义类时使用的类名是该项目中没有的类,而定义类别时使用的类名必须是已有的类 2、定义类别必须使用圆括号来包含类别名 3、类别中通常只包含方法的定义,命名形式为“类名+类别名” 12、类别与扩展 11、类别与扩展 扩展:扩展与类别类似,相当于匿名的类别。扩展用于临时对某个类的接口进行扩展,而类实现部分同时要实现接口部分定义的方法和扩展部分定义的方法 @interface 已有类名() { //实例变量 } //方法定义部分 @end 11、类别与扩展 扩展:扩展与类别类似,相当于匿名的类别。扩展用于临时对某个类的接口进行扩展,而类实现部分同时要实现接口部分定义的方法和扩展部分定义的方法 12、协议与委托 协议:协议相当于多个类共同的行为行为规范,他申明一组方法,列出他的参数和返回值,共享给其他类使用,然后不进行实现,让用它的类来实现这些方法;在任何一个类中,只有声明了协议,都可以实现协议里的方法 @protocol 协议名父协议1,父协议2 //多个协议方法的定义 @end 1、一个协议可以有多个直接父协议,但协议只能继承协议,不能继承类 2、协议定义中只有方法签名,没有方法实现 3、与类的继承不同,一个协议可以有多个直接的父协议,之间用逗号隔开 12、协议与委托 遵守协议:在类定义的接口部分可指定该类继承的父类,以及遵守的协议 @interface 类名 : 父类协议1,协议2 @end 12、协议与委托 协议与委托:协议体现的是一种规范,定义协议的类可以把协议定义的方法委托给实现协议的类,这样可以让类定义具有更好的通用性质 13、异常处理 异常处理:Objective-C提供了@try.....@catch....@finally来捕获异常,开发者可以将可能引起异常的代码放在@try后的代码内,当程序发生异常时,该异常可以使用catch块进行捕获 @try{ //可能引起异常的业务代码 } @catch(异常 ex1){ //异常捕获代码 } @catch( 异常 ex2){
显示全部