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 记
- IOS第十二天——Obj-C++
- IOS第十天——Obj-C的属性
- IOS第十天——Obj-C的属性
- IOS第十天——Obj-C的属性
- IOS第七天——Obj-C中的继承
- IOS第四天——Obj-C的数据类型和表达式
- IOS第六天——Obj-C的内存管理初步认识
- IOS第六天——Obj-C的内存管理初步认识
- IOS第八天——Obj-C的多态性、动态类型和动态绑定
- IOS第九天——Obj-C中的类别和协议
- IOS第十一天——Obj-C中的快速枚举
- IOS第十三天——使用Obj-C中的高级类
- IOS第九天——Obj-C中的类别和协议
- IOS第八天——Obj-C的多态性、动态类型和动态绑定
- IOS第八天——Obj-C的多态性、动态类型和动态绑定
- IOS第九天——Obj-C中的类别和协议
- iOS Obj-C
- iOS Obj-C General Info
- 图解SQL Join用法
- g++ 编译器选项
- Hibernate中XML映射文件产生主键的方式
- 逻辑运算
- java多线程模拟生产者消费者问题
- IOS第十二天——Obj-C++
- PHP注销删除Session变量的通用方法
- DOCSIS config file-IPv4 Packet Classification Encodings
- php配置session相关知识
- Mybatis上路_05-使用命令行自动生成
- HDU 1599 find—— the mincost route
- 求数组的连续子数组之和的最大值
- POI 解析Excel(兼容 2003,2007)
- WSAAsyncSelect模式编程