ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章

上传人:繁星 文档编号:88250414 上传时间:2019-04-22 格式:PPTX 页数:90 大小:813.96KB
返回 下载 相关 举报
ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章_第1页
第1页 / 共90页
ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章_第2页
第2页 / 共90页
ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章_第3页
第3页 / 共90页
ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章_第4页
第4页 / 共90页
ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章》由会员分享,可在线阅读,更多相关《ios应用程序开发方法与实践 教学课件 金福生 李朴之_ ios应用程序开发方法与实践 第02章(90页珍藏版)》请在金锄头文库上搜索。

1、第2章 iOS开发基础知识,本章内容概要,掌握如何创建类,定义类的成员变量、方法、属性和继承关系等。 掌握如何使用类,包括类的实例化,调用对象的实例方法与类的静态方法等。 掌握协议(接口)的创建和使用方法,以及如何通过协议保证类的行为。 掌握类别的使用方法,学习如何通过类别对类的行为进行扩展。,iOS应用程序开发方法与实践,2,本章内容概要,理解并应用内存管理原则,防止内存泄漏与过度释放。 掌握字符串对象的各种使用场景。 掌握如何使用错误与异常处理增强程序的健壮性。 掌握键值编码KVC与常用集合类的使用。 掌握函数指针与块的使用方法,了解它们之间的区别。,iOS应用程序开发方法与实践,3,2.

2、1 Objective-C语言介绍,Objective-C是一种既古老又崭新的编程语言。 Brad Cox 于1983年创建,结合了C和Smalltalk的各自优点。 Foundation框架中的很多类名都以NS开头,代表NeXTSTEP。 Objective-C一直与时俱进。 Mac OS X、iOS(iPhone OS)等很多重量级产品都使用Objective-C开发。 Objective-C是C语言的一个扩展,兼容C语言。 Objective-C编译器允许对Objective-C和C的混合代码进行编译。,iOS应用程序开发方法与实践,4,2.2 类,类是对一类事物的抽象描述。 类的实例/

3、对象是类的一个实体,满足类的特征。 创建类的对象,称为类的实例化。 类之间允许具有包含关系,表达“是一个”的关系。 类之间还允许具有组合(复合)关系 ,表达“有一个”的关系。 在程序的设计与实现阶段需要定义不同的类,并创建它们的实例(对象),完成各种任务。,iOS应用程序开发方法与实践,5,2.2.1 类的外部接口与内部实现,类由两部分组成: 类的外部接口(Interface),位于.h头文件中 类的内部实现(Implementation),位于.m源代码文件中 将类分成两部分,可以让类的使用者关注类的功能和使用方法,而非实现细节。,iOS应用程序开发方法与实践,6,2.2.1 类的外部接口与

4、内部实现,类的外部接口定义在.h头文件中,包括以下内容: 类的名称 继承关系 遵从的协议 成员变量 方法(消息) 属性 类的内部实现定义在.m源代码文件中,包含以下内容: 全局变量与静态变量 属性的生成 方法的实现,iOS应用程序开发方法与实践,7,2.2.1 类的外部接口与内部实现,iOS应用程序开发方法与实践,8,2.2.1 类的外部接口与内部实现,/ Cat.h interface Cat : NSObject /类的成员变量区: /在此添加类的成员变量 /类的方法与属性区: /在此添加类的方法与属性 end,iOS应用程序开发方法与实践,9,2.2.1 类的外部接口与内部实现,/ Ca

5、t.m #import “Cat.h“ implementation Cat /类的实现区: /在此添加静态变量、属性与方法的实现 end,iOS应用程序开发方法与实践,10,2.2.1 类的外部接口与内部实现,类的外部接口声明: 位于interface指令与end指令之间。 interface指令后指定类的名字。 类名之后附加冒号,并指定基类名称。 使用尖括号定义类遵从的协议。 大括号之间定义类的成员变量。 在大括号之后定义类的属性和方法声明。 最后以end结束类声明。,iOS应用程序开发方法与实践,11,2.2.1 类的外部接口与内部实现,类的内部实现: 使用#import指令引入类的外部

6、接口头文件。 在implementation指令后给出类的名字。 在implementation指令与end指令之间编写类的静态成员、所有方法与属性的实现代码。 #import指令与#include指令都是编译预处理指令。 二者都用于将指定的头文件的内容引入到当前位置。 二者区别是#import指令保证头文件至多只会被引用一次。 使用双引号引用当前项目中的头文件。 使用尖括号引用某个框架中的头文件。,iOS应用程序开发方法与实践,12,2.2.2 类的成员变量,成员变量属于类的每个对象。 保存与对象相关的内部状态。 不同对象的同一成员变量会有不同的值。 / Cat.h interface Ca

7、t : NSObject private NSString* _name; /保存名字 int _age; /保存年龄 end,iOS应用程序开发方法与实践,13,2.2.2 类的成员变量,使用编译器指令定义成员变量的访问级别: protected:保护访问级别,默认值。成员变量只对当前类及其子类的实例方法可见。 private:私有访问级别。成员变量只对当前类的实例方法可见。 public:公有访问级别。成员变量对外可见。,iOS应用程序开发方法与实践,14,2.2.3 类的实例方法,方法用于实现各种功能,或是执行各种动作。 使用电视机遥控器切换频道、调整音量、改变图像颜色等。 在类的对象上

8、调用某个实例方法,也就是向类的对象发送某条消息。 方法需要在方法与属性区中进行声明,并在内部实现中进行定义。,iOS应用程序开发方法与实践,15,2.2.3 类的实例方法-声明实例方法,方法最前面使用加号或者减号表示方法的类型。 减号:实例方法,属于类的对象。 加号:类方法(类的静态方法),不属于类的任何对象,而是属于类。 使用小括号括住方法的返回值类型。 无参数方法在返回值之后直接给出方法名。 有参数方法通过空格分隔多个参数描述部分。 每个参数描述包含参数简要说明、冒号、用小括号扩住的参数类型和参数名。 方法声明最后必须以分号结尾。,iOS应用程序开发方法与实践,16,2.2.3 类的实例方

9、法-声明实例方法,无参数方法的声明格式: +|- (返回值类型) 方法名; 有参数方法的声明格式: +|- (返回值类型) 参数1说明:(参数1类型)参数1名字 参数2说明:(参数2类型)参数2名字 .; 请注意Objective-C与其他面向对象编程语言的区别。,iOS应用程序开发方法与实践,17,2.2.3 类的实例方法-声明实例方法,/ Cat.h interface Cat : NSObject . /向主人问好 - (void)sayHello; /判断是否喜欢某种食物 - (BOOL)likeFood:(NSString*)food; /用于初始化一只新猫 - (id)initWi

10、thName:(NSString*)newName andAge:(int)newAge; end,iOS应用程序开发方法与实践,18,2.2.3 类的实例方法-实现实例方法,首先写出方法的声明,但不包含声明结尾的分号。 然后在一对大括号之内编写方法的实现代码。,iOS应用程序开发方法与实践,19,2.2.3 类的实例方法-实现实例方法,/ Cat.m #import “Cat.h“ implementation Cat - (void)sayHello NSLog(“Miaow!“); - (BOOL)likeFood:(NSString*)food return food isEqualT

11、oString:“Fish“ | food isEqualToString:“Mouse“; ,iOS应用程序开发方法与实践,20,2.2.3 类的实例方法-实现实例方法,/初始化方法 - (id)initWithName:(NSString*)newName andAge:(int)newAge /完成基类部分的初始化 self = super init; if(self) /获得字符串对象的副本 _name = newName copy; _age = newAge; return self; ,iOS应用程序开发方法与实践,21,2.2.3 类的实例方法-实现实例方法,/用于释放对象占用

12、的内存资源 - (void)dealloc _name release; /释放字符串对象占用的内存 super dealloc; end self:指向当前接收消息的对象,即方法的当前调用目标。 super:指向当前对象的基类对象,用于调用基类的实例方法。 注意与其他编程语言的区别。 dealloc方法用于在对象销毁时释放该对象占用的资源。,iOS应用程序开发方法与实践,22,2.2.3 类的实例方法-调用实例方法,无参数方法的调用格式: 调用目标 方法名; 有参数方法的调用格式: 调用目标 方法名:参数 方法名:参数 .; 例如,创建Cat对象并调用其方法: Cat* myCat = Ca

13、t alloc initWithName:“MiMi“ andAge:3; myCat sayHello; myCat likeFood:“Fish“; myCat release;,iOS应用程序开发方法与实践,23,2.2.3 类的实例方法-调用实例方法,实例方法的访问级别总是public。 方法调用允许嵌套。 注意调用Objective-C方法与调用C函数在语法上的区别。 Objective-C存在真正意义上的私有方法吗?这体现了Objective-C编程语言的什么特性?,iOS应用程序开发方法与实践,24,2.2.3 类的实例方法-选择器,方法的声明即方法的全名: - (id)init

14、WithName:(NSString*)newName andAge:(int)newAge; 方法的签名去掉了方法作用范围、返回值类型、参数类型和参数名称: initWithName:andAge:,iOS应用程序开发方法与实践,25,2.2.3 类的实例方法-选择器,每一个Objective-C方法都对应一个选择器对象。 Objective-C运行时通过方法对应的选择器来定位其实现代码。 选择器对象是SEL类型的对象。 通过selector指令并传入方法签名,即可获取该方法的选择器(注意冒号的问题)。 SEL initMethodSelector = selector(initWithNa

15、me:andAge:); 选择器常常用于指定回调方法,例如指定用户在单击按钮后调用哪个方法。 如果程序调用了对象的某个不存在的方法,在编译时和运行时会分别出现什么情况?,iOS应用程序开发方法与实践,26,2.2.4 类的属性,成员变量的默认访问级别为protected,外部无法直接访问或修改成员变量。 类的属性用于访问和修改类的成员变量: 属性就是成员变量的get与set方法集。 没有破坏类的封装性。,iOS应用程序开发方法与实践,27,2.2.4 类的属性-声明属性,属性声明的格式: property (属性的附加特性) 属性类型 属性名称; 例如: property (nonatomic

16、, copy) NSString* name; property (nonatomic, assign) int age; 属性的附加特性可以是nonatomic、readonly、readwrite、getter = get方法名, setter = set方法名、assign、retain或者copy。 nonatomic:不使用互斥锁,用于提高效率。 readonly:只读。 getter = get方法名, setter = set方法名:指定get与set方法名。 assign、retain或者copy:这三种附加特性涉及到内存管理。,iOS应用程序开发方法与实践,28,2.2.4 类的属性-声明属性,/ Cat.h interface Cat : NSObject . property (nonatomic, copy) NSString* name

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号