




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、柳行刚 Objective-C概述 Objective-C是一种简单的计算机语言,它可以用来 设计复杂的面向对象程序。 Objective-C扩展了标准ANSI C语言,增加了一些定义类、方法以及其它结构的语法, 提升了类的动态扩展。 许多传统面向对象的思想,比如 封装、继承、多态,都会在Objective-C中体现。 Objective-C与C语方的关系 Objective-C是C语言ANSI版本的超集, 支持和C相同的基本语法。用C代码,你可 以定义头文件和源码文件,以从详细实现 的代码中分离出公开的声明。 Objective-C代码的扩展名 Objective-C类的定义 和大多数其它面
2、向对象语言一样,Objective-C里的 类也提供基本的结构,用来封装带有行为的一些数据。一 个对象是一个类的运行实例,包含类中声明变量的实例在 内存中的复制,以及指向该类的方法。 Objective-C中类的定义,要求两个明显的部分:接口 和实现。接口部分包含类的声明、定义成员变量,及与此 类关联的方法。接口通常在a .h 文件里。实现部分包含类 的方法实际代码。实现通常在 a .m 文件里。 Objective-C类实例 Objective-C类实例说明 上图声明MyClass类的语法,它继承自Cocoa的基类 NSObject。这个类的声明开始于 interface 编译指令, 结束于
3、 end 指令。仅跟着类名的(以冒号分割)是父类名。 类的实体变量(有时简称ivars,在一些其它语言中称作成 员变量)声明在以大括号(和)括起来的代码块中。实 体变量后面是类的方法声明列表。以分号做为每个实体变 量和方法的结束标记。 Objective-C的变量 Objective-C支持包含对象的强弱两个类型的变量。在变量声明时, 强类型的变量包含类名,弱类型的变量使用类型 id 代替对象。弱类 型变量在像集合类中使用频繁,在一个集合中的对象的实际类型可能 是未知的。如果你使用过强类型的语言,你可能会认为使用弱类型会 引起问题,但是在Objective-C程序中它们实际上提供了很大的灵活性
4、 和更强大的动态性。 强类型变量示例: MyClass*myObject1; 弱类型变量示例: id*myObject2; Objective-C类的方法 Objective-C中的类可以声明两种类型的方法:实体 方法和类方法。一个实体方法是在这个特定类的实例中才 能执行的方法,换句话说,在调用实体方法前,你必须首 先要创建这个类的实例。方法的声明由方法的类型标识符、 一个返回值类型、一个或多个签名关键字、参数类型和名 称信息组成。 实体方法 insertObject:atIndex:的声明格式 实体方法 insertObject:atIndex:的声明说明 声明开始于减号(-) ,减号用来标
5、识这是一个实体方 法。这个方法的实际名称 (insertObject:atIndex:) 是所有 签名关键字的拼接,包括冒号。冒号声明了当前的参数.如 果方法没有参数,你就可以省略第一个签名关键字。在这 个例子中,该方法有两个参数。 Objective-C实体方法调用 当你想调用上面这个方法时,你可以通过向对象 通信 。 通信内 容是方法签名和方法要求参数信息。 信息是用中括号 ( 和 )包裹的。 在中括号里面,接收信息的对象在左边,信息(包括信息要求的参数) 在右边。例如,发送信息insertObject:atIndex: 到变量名为 myArray 的对象,你会用到下面的语法: myArr
6、ay insertObject:anObject atIndex:0; Objective-C类方法声明 你使用类方法来创建类的新实例,或访问有关此类的 一些共享信息。类方法的声明语法除了一点不同,其它完 全和实体方法一样。用加号(+)来代替用减号(-)作为方法类 型的标识符。 Object-C类实例 implementation MyClass - (id)initWithString:(NSString *)aName self = super init; if (self) name = aName copy; return self; + (MyClass *)createMyClas
7、sWithString: (NSString *)aName return self alloc initWithString:aName autorelease; end 声明属性 声明属性是代替声明及简单实现存取器方法的方便形式。 在类接口里,可以包含属性声明和方法声明。基本的定义用 property 编译指令,之后是类型信息和属性名称。你也可以定制配置属性,比如定 义存取器方法如何执行。下面的例子展示一个简单属性的声明: property BOOL flag; property (copy) NSString *nameObject; / 在赋值时复制对象。 property (read
8、only) UIView *rootView; /声明一个只读方法 每个可读属性指定一个与该属性同名的方法。每个可写属性指定一个额外的方法,格式为 setPropertyName, 属性名的首字母要大写。 在你的类的实现里,你可以使用 synthesize 编译指令来要求编译器依照声明规格创建方法: synthesize flag; synthesize nameObject; synthesize rootView; 你可以合并 synthesize 语句到一行中,如果你愿意: synthesize flag, nameObject, rootView; 协议 一个协议声明的方法可以被任意类
9、实现。协议本身没有类。他们只是简单地定义一个接口 让其它对象可靠的实现。当你在你的类里实现一个协议的方法时,就可以说你的类符 合那个协议了。 协议被频繁用于为 委拖 对象指定接口。看协议、委托以及其它对象之间的相互作用的最好 方式,就是看一个例子。 UIApplication 类实现一个应用程序要求的行为。不用强迫你实现子类 UIApplication 来接 收有当前程序状态的简单通知。而是 UIApplication 类通过调用它分配的委托对象的具 体方法来发送那些通知。实现 UIApplicationDelegate 协议方法的对象能接收那些通知, 并提供恰当的答复。通过将协议的名称用“”
10、包裹起来放到它继承的类后面,来指定 你的类遵循或采用的协议。你不用去声明你实现协议的方法。 interface MyClass : NSObject end 协议的声明看起来比较类似一个类的接口,不同的是协议没有父类也不能定义实体变量。 下面的例子展示了含有一个方法的简单协议: protocol MyProtocol - (void)myProtocolMethod; end iPhone开发环境介绍 硬件: 1.苹果电脑, 必须是基于Intel的Macintosh计算机。 2.iPhone或iPod Touch,主要用来测试编写好的程序。 软件: 1.苹果系统MacOS。 2.iPhone SDK(请从 :/developer.apple/iphone/下载最新版SDK), SDK中包含苹果公司的集成开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生创新创业-药膳养生创业计划书
- 体育旅游公司创业计划书
- 便利店行业2025年市场扩张机遇与差异化竞争策略研究报告
- 2025年AI赋能医疗影像诊断技术创新趋势报告
- 新媒体环境下2025年新闻传播真实性、公信力与新闻传播创新模式研究报告
- 注册商标使用许可合同正规版样本6篇
- 小学四年级阅读教学计划书
- 酒局事故协议书
- 玉溪分户协议书
- 合作共建实训室协议书
- 北京2025年中国专利信息中心招聘14名社会在职人员笔试历年参考题库附带答案详解
- 中华人民共和国保守国家秘密法实施条例
- 课件:第二章 社会工作项目申请(《社会工作项目策划与评估》课程)
- 2023年中国检验认证集团福建有限公司招聘笔试题库及答案解析
- 【教学课件】微专题一:探究郑州暴雨事件
- 智慧教育典型案例:之江汇“空间站”:校本研修资源利用的载体创新探索
- (完整版)钢楼梯施工方案
- 装饰装修工程监理细则详解模板
- 高度近视黄斑劈裂的自然病程及进展因素课件
- 三峡库区秭归县头道河Ⅱ号滑坡防治工程地质详细勘查报告
- GB∕T 20565-2022 铁矿石和直接还原铁 术语
评论
0/150
提交评论