IOS第十二天——Obj-C++

来源:互联网 发布:sql right函数 编辑:程序博客网 时间:2024/05/22 13:09

转眼间已经快半个月了,从正式开始学习Obj-C到现在已经差不多接近半个月了,这段时间算是对Obj-C这门语言有了一个简单而初步的认识,那么我们今天来学习下Obj-C++,所谓的Obj-C++,就是将Obj-C和代码和C++代码整合在同一个文件里面,这种Obj-C/C++的混合就叫做Obj-C++,它可以让开发者在Obj-C应用程序里加入C++库。

在Obj-C++中,我们可以在Obj-C代码中调用C++的方法,反之亦然,对象的指针在两种语言里都仅仅是指针,可以被用在任何地方。那么需要注意的是Obj-C和C++混编的时候,我们需要把文件保存为.mm格式的,这样方便编译器识别,下面的代码演示了两种语言类的对象的互相引用:

#import <Foundation/Foundation.h>//定义一个C++类Class Hello{    private:        id greeting_text;//NSString对象    public:    Hello()//类Hello的构造函数    {        greeting_text=@"Hello, world!";    }    Hello(const char* initial_greeting_text)//类Hello的构造函数    {        greeting_text=[[NSString alloca] initWithUTF8String:initial_greeting_text];    }    void say_hello()    {        printf("%s\n",[greeting_text UTF8String])    }};//定义一个Obj-C类Greeting@interface Greeting : NSObject{    Hello *hello;}//类Greeting的方法定义-(id)init;-(void)dealloc;-(void)sayGreeting;-(void)sayGreeting:(Hello*)greeting;@end@implementation Greeting(id)init{    self=[super init];    if(self)    {        hello=new Hello();//实例化一个C++对象,注意C++与Obj-C混用的时候最好使用new操作符来实例化C++对象    }    return self;}(void)dealloc{    delete hello;//删除C++对象hello    [super dealloc];}(void)sayGreeting{    hello->say_hello();//调用C++类Hello的say_hello函数}(void)sayGreeting:(Hello*)greeting{    greeting->say_hello();}@endint main(){    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];    Greeting *greeting=[[Greeting alloc] init];//实例化Greeting对象    [greeting sayGreeting];                     //输出Hello, world!    Hello *hello=new Hello("Bonjour, monde!");  //实例化Hello对象    [greeting sayGreeting:hello];               //输出Bonjour, monde!    delete hello;                               //释放hello对象    [greeting release];    return 0;}

那么上面的代码中,我们在C++类Hello中运用了Obj-C对象NSString,而在Obj-C类Greeting中引用了C++类Hello作为实例变量,并在Obj-C类方法中调用了C++类的方法,需要注意的是,Obj-C不能继承C++类,反之亦不能。

同时一些C++的特性也不能加入到Obj-C中,反之亦然,而且,两种语言的异常处理也是不兼容的,所以这块儿我们简单的了解一下。

OK,鉴于我没有学过C++,所以这块儿对我来说,确实是简单的了解一下,那么以后的开发过程中,相信我还是会更多的采用Obj-C来开发,不过了解下C,确实跟很多技术大牛说的那样儿,对底层的一些东西理解起来会更容易一些。

2013年04月25日,Eric.Tang 记


原创粉丝点击