首页 技术 正文
技术 2022年11月14日
0 收藏 817 点赞 3,823 浏览 2076 个字

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()
{
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();
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;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,084
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,559
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,408
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,181
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,818
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,901