在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 建立一个C++类 2. 写一个Adaptor的Objective-C类 3. 在其他Objective-C的逻辑中调用Adaptor类。
1.C++类 // // CPlusPlusClass.h // OBJ_C++ // // Created by Txtw on 13-7-2. // Copyright (c) 2013年 Txtw. All rights reserved. // #ifndef __OBJ_C____CPlusPlusClass__ #define __OBJ_C____CPlusPlusClass__ #include <iostream> class CPlusPlusClass { public: CPlusPlusClass(); virtual ~CPlusPlusClass(); void func(); void setInt (int i) { m_i = i; } private: int m_i; }; #endif /* defined(__OBJ_C____CPlusPlusClass__) */ // // CPlusPlusClass.cpp // OBJ_C++ // // Created by Txtw on 13-7-2. // Copyright (c) 2013年 Txtw. All rights reserved. // #include "CPlusPlusClass.h" CPlusPlusClass::CPlusPlusClass() : m_i(0) { printf("CPlusPlusClass::CPlusPlusClass()\n"); func(); } CPlusPlusClass::~CPlusPlusClass() { printf("CPlusPlusClass::~CPlusPlusClass()\n"); } void CPlusPlusClass::func() { printf("CPlusPlusClass func print: %d\n", m_i); }
2. Adaptor类 // // ObjectiveCAdaptor.h // OBJ_C++ // // Created by Txtw on 13-7-2. // Copyright (c) 2013年 Txtw. All rights reserved. // #import <Foundation/Foundation.h> class CPlusPlusClass; //这个声明得小心,千万不要写成@class,兄弟我搞了半宿才找到这个错误。呵呵,见笑,见笑。 @interface ObjectiveCAdaptor : NSObject { @private CPlusPlusClass *testObj; } - (void) objectiveFunc; @end 在Build Settings中把编译器的Compile Sources As选项改为Objective C++。否则编译器找不到C++类。 // // ObjectiveCAdaptor.m // OBJ_C++ // // Created by Txtw on 13-7-2. // Copyright (c) 2013年 Txtw. All rights reserved. // #import "ObjectiveCAdaptor.h" #include "CPlusPlusClass.h" @implementation ObjectiveCAdaptor - (id) init { if (self = [super init]) { testObj = new CPlusPlusClass(); } return self; } - (void) dealloc { if (testObj != NULL) { delete testObj; testObj = NULL; } [super dealloc]; } - (void) objectiveFunc { testObj->setInt(5); testObj->func(); } @end 3.调用 //调用示例: - (void) callObjectiveCAdaptorMethod { ObjectiveCAdaptor *testObjectiveCObj = [[ObjectiveCAdaptor alloc] init]; [testObjectiveCObj objectiveFunc]; [testObjectiveCObj release]; }
from:http://www.cnblogs.com/biosli/archive/2011/04/30/Mixing_ObjectiveC_and_Cplusplus_in_iPhone_Development.html 参考:http://www.cocoachina.com/bbs/read.php?tid-9111-fpage-3.html http://blog.csdn.net/horkychen/article/details/7935910
调用C 1.创建.h, .m文件 2.#import "testC.h" 直接调用方法 testC.h如下: int hello(int i,int j); testC.m如下: int hello(int i,int j){ return i+j; }
|
请发表评论