



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
了解Objective-C特点及特征是本文要介绍的内容,目前好象只有Apple使用Objective-C作为其支持的语言吧。 不多说,直接来看详细内容,与C+的不同之处有:Objective-C中所有的类都必须继承自NSObject。Objective-C中所有对象都是指针的形式。Objective-C用self代替this。Objective-C使用id代替void*。Objective-C使用nil表示NULLObjective-Ck只支持单继承。Objective-C使用YES/NO表示TRUE/FALSEObjective-C使用#import代替#includeObjective-C中用消息表示类的方法,并采用aInstance method:argv调用形式。Objective-C支持反射机制Objective-C支持Dynamic Typing, Dynamic Binding和Dynamic Loading。与C+的相同之处有:与C共享的部分一致。可以使用assert(BOOL), 一般用NSCParameterAssert(BOOL)代替。Objective-C中的命名前缀说明: 1. NS-:NextStep 2. CF-:CoreFoundation 3. CA-:CoreAnimation 4. CG-:CoreGraphics 5. UI-:UserInterfaceObjective-C中的消息特殊性: 调用消息的类可以不知道如何响应这个消息。如果它不知道如何处理这个消息,它会自动的将这个消息转给其他的类,比如它的父类。调用消息的类可以是nil。在C+中,在使用类方法之前,我们都需要检查对象是否为空,所以在实现析构函数的时候,常会有如下的代码,如if (var) delete var; 但是在Objective-C中,我们就可以直接写var release; 即使var = nil, 也不会有问题。Objective-C中的函数声明格式有:1. -/+(returntype)function_name; 2. -/+(returntype)function_name:(parametertype)parameter; 3. -/+(returntype)function_name: 4. (parametertype)parameter1otherParameter: 5. (parameter_type)parameter2以上参数说明:-表示一般函数,+表示静态函数。otherParameter是参数的别名(第一个参数的别名省略),在函数调用时方便指定。Objective-C中的构造/析构函数 Objective-C中的init()/release()对应于C+的构造/析构函数。alloc()/dealloc()也就对应于C+的new和delete,其中的dealloc()由于引用计数的自动调用而不用手动调用。Objective-C中父类的init()/release()函数需要子类的手动调用。而且每次都必须调用。不同于C+的自动调用。构造函数(- (id) init)调用形如:CSample* pSample=CSample alloc init;其中alloc(+ (id) alloc)是继承来的static函数,init是继承来的一般函数,如重写一般函数时,则相当于C+的覆盖(不带参数)或重载(带参数)。析构函数(- (void) release)将引用计数减1,当=0时父类的release()会自动调用dealloc(- (void) dealloc);当Objective-C没有数据成员时,可省略,建议保留。继承下来的方法,如:-(id) init可以头文件中省略,建议保留0-C中只有数据成员的访问限制,没有方法的访问限制。同C+一样,数据成员有三种访问限制public, protected, private,缺省是protected。示例:1. interfaceAccessExample:NSObject 2. public 3. intpublicVar; 4. protected 5. intprotectedVar; 6. private 7. intprivateVar; 8. 9. end方法的访问限制可通过Category实现示例:1. interfaceMyClass 2. -(void)sayHello 3. NSLog(Hello); 4. 5. end 6. 7. interfaceMyClass(Private) 8. -(void)kissGoodbye; 9. endObjective-C中没有类的静态变量,只有全局变量Objective-C中的数组NSArray可以保存不同类型的数据。Objective-C也支持run-time时的类类型检查1. -(BOOL)isKindOfClass:classObj用于判断该对象是否属于某个类或者它的子类1. -(BOOL)isMemberOfClass:classObj用于判断该对象是否属于某个类(这里不包括子类)1. -(BOOL)respondsToSelector:selector用于判断该对象是否能响应某个消息。这里,我们可以将selector后面带的参数理解为C+中的函数指针。注意:1)不要忘了2)selector后面用的是(),而不是。3)要在消息名称后面跟:,无论这个消息是否带参数。如:1. pSquarerespondsToSelector:selector(Set:andHeight:)。 2. +(BOOL)instancesRespondToSelector:selector用于判断该类是否能响应某个消息。这是一个静态函数。-(id) performSelector: selector :调用对象的selector方法。conformsToProtocol 类似于respondsToSelector ,用于动态检查某个对象是否遵守某个协议。Category:在没有源代码的情况下,为一个已经存在的类添加一些新的功能只能添加新的方法,不能添加新的数据成员Category 的名字必须是唯一的Protocol:相当于C+中的纯虚类形如:1. interfaceMyDate:NSObjectend使用:1. MyDate*dat=MyDateallocinit;idvar=dat;varprint。说明:我们首先声明了Printing 协议,任何遵守这个协议的类,都必须实现print 方法。在Objective-C 中,我们通过来表示遵守某个协议。当某个类声明要遵守某个协议之后,它就必须在.m文件中实现这个协议中的所有方法。使用id 作为类型,而不是象C+中的Printing* var。IBOutlet, IBAction: 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Bui
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业设计合同签订与风险防范
- 初中新生心理团辅活动策划方案
- 数控设备安全操作规程与培训教材
- 小学一年级语文拼音测试题
- 锅炉运行原理课程设计案例讲解
- 人教版一年级语文复习易错题
- 新零售模式下供应链管理方案
- 中国古典诗词常用象征意象解析
- 初中英语词汇记忆与应用技巧
- 物业费收支管理及财务报告模板
- 质量月报范本
- FZ/T 52051-2018低熔点聚酯(LMPET)/聚酯(PET)复合短纤维
- 【精品】2020年职业病诊断医师资格培训考试题
- 日本产业发展及文化讲义课件
- 派车单(标准样本)
- 广东省建筑施工安全管理资料统一用表2021年版(原文格式版)
- 浦东机场手册
- JGJ保温防火复合板应用技术
- 幼儿园绘本:《闪闪的红星》 红色故事
- 山区二级公路施工组织设计(共60页)
- 小学生符号意识与模型思想的发展与培养
评论
0/150
提交评论