最新从 C++ 到 Objective-C(4):类和对象(续).doc

最新从 C++ 到 Objective-C(4):类和对象(续).doc

ID:60722692

大小:342.50 KB

页数:6页

时间:2020-12-11

最新从 C++ 到 Objective-C(4):类和对象(续).doc_第1页
最新从 C++ 到 Objective-C(4):类和对象(续).doc_第2页
最新从 C++ 到 Objective-C(4):类和对象(续).doc_第3页
最新从 C++ 到 Objective-C(4):类和对象(续).doc_第4页
最新从 C++ 到 Objective-C(4):类和对象(续).doc_第5页
最新从 C++ 到 Objective-C(4):类和对象(续).doc_第6页
资源描述:

《最新从 C++ 到 Objective-C(4):类和对象(续).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、__________________________________________________从C++到Objective-C(4):类和对象(续)作者: DevBean 日期:2011年03月19日发表评论 (9)查看评论方法Objective-C中的方法与C++的函数在语法方面风格迥异。下面,我们就来讲述Objective-C的方法。原型、调用、实例方法和类方法·以–开头的是实例方法(多数情况下都应该是实例方法);以+开头的是类方法(相当于C++里面的static函数)。Objective-C的方法都是public的;·返回值和参数的类型都需要用小括号括起来;·参

2、数之间使用冒号:分隔;·参数可以与一个标签label关联起来,所谓标签,就是在:之前的一个名字。标签被认为是方法名字的一部分。这使得方法比函数更易读。事实上,我们应该始终使用标签。注意,第一个参数没有标签,通常它的标签就是指的方法名;·方法名可以与属性名相同,这使getter方法变得很简单。C++//原型voidArray::insertObject(void*anObject,unsignedintatIndex); //shelf是Array类的一个实例,book是一个对象shelf.insertObject(book,2);Objective-C(不带label,即直

3、接从C++翻译来)//方法原型//方法名字是“insertObject::”//这里的冒号:用来分隔参数,成为方法名的一部分(注意,这不同于C++的域指示符::)-(void)insertObject:(id)anObject:(unsignedint)index //shelf是Array类的一个实例,book是一个对象[shelfinsertObject:book:2];Objective-C(带有label)//方法原型。“index”有一个标签“atIndex”//方法名为“insertObject:atIndex:”//这样的话,调用语句就很容易阅读了-(void

4、)insertObject:(id)anObjectatIndex:(unsignedint)index 收集于网络,如有侵权请联系管理员删除__________________________________________________//shelf是Array类的一个实例,book是一个对象[shelfinsertObject:book:2];//错误![shelfinsertObject:bookatIndex:2];//正确注意,方括号语法不应该读作“调用shelf对象的insertObject方法”,而应该是“向shelf对象发送一个insertObject消

5、息”。这是Objective-C的实现方式。你可以向任何对象发送任何消息。如果目标对象不能处理这个消息,它就会将消息忽略(这会引发一个异常,但不会终止程序)。如果接收到一个消息,目标对象能够处理,那么,目标对象就会调用相应的方法。如果编译器能够知道目标对象没有匹配的方法,那么编译器就会发出一个警告。鉴于Objective-C的前向机制,这并不会作为一个错误。如果目标对象是id类型,那么在编译期就不会有警告,但是运行期可能会有潜在的错误。this,self和super一个消息有两个特殊的目标对象:self和super。self指当前对象(类似C++的this),super指父

6、对象。Objective-C里面没有this指针,取而代之的是self。注意,self不是一个关键字。实际上,它是每个消息接收时的隐藏参数,其值就是当前对象。它的值可以被改变,这一点不同于C++的this指针。然而,这一点仅仅在构造函数中有用。在方法中访问实例变量同C++一样,Objective-C在方法中也可以访问当前对象的实例变量。不同之处在于,C++需要使用this->,而Objective-C使用的是self->。C++Objective-CclassFoo{intx;inty; voidf(void);}; voidFoo::f(void){x=1;inty;//

7、隐藏this->yy=2;//使用局部变量ythis->y=3;//显式使用成员变量}@interfaceFoo:NSObject{intx;inty;} -(void)f;@end @implementationFoo -(void)f{x=1;inty;//隐藏this->y收集于网络,如有侵权请联系管理员删除__________________________________________________y=2;//使用局部变量yself->y=3;//显式使用成员变量}@end原型的id、签名和重载函数就

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。