Xcode里怎么使用c 调用oc的方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode里怎么使用c 调用oc的方法?相关的知识,希望对你有一定的参考价值。
我想在c文件里去调用一个oc的方法,但是不知道如何下手啊,所以想请教各位大神帮忙解答一下。尽量详细点哦,附带代码参考一下就再好不过了,在这里先谢谢各位大神了
1.你的文件不能只是C类型的。下面我选择的类型是Foundation类型。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
@autoreleasepool
// insert code here...
NSLog(@"Hello, World!");
int a[5]=1,2,3,4,5;
NSArray * array = @[@"1",@"2",@"3",@"4"];
NSLog(@"%@", array[1]);
return 0;
导入了#import <Foundation/Foundation.h>就可以使用OC的方法,OC兼容C语言,像
int a[5]=1,2,3,4,5;
NSArray * array = @[@"1",@"2",@"3",@"4"];
NSLog(@"%@,%d", array[1],a[1]);
这样的写法,完全没有问题。
2.OC的方法不是类方法(+号开头)就是实例方法(-减号开头),这两种方法都需要有东西来调用。类方法通过类名调用,实例方法通过实例调用。而你的C文件,里面两者都不存在。所以,需要新建一个类,将方法写入到这个类中。然后,在C文件中,导入这个类,然后,就可以调用这个类相关的方法。
#import <Foundation/Foundation.h>
#import "OCQWE.h"
int main(int argc, const char * argv[])
@autoreleasepool
// insert code here...
NSLog(@"Hello, World!");
int a[5]=1,2,3,4,5;
NSArray * array = @[@"1",@"2",@"3",@"4"];
NSLog(@"%@,%d", array[1],a[1]);
OCQWE *qcqwe =[[OCQWE alloc]init];
int c = [qcqwe funWithNumber1:1 andNmuber2:4];
NSLog(@"c=%d",c);
int d =fun(3,5);
printf("d=%d\\n",d);
return 0;
int fun(int a,int b)
return a+b;
输出结果为
2014-07-29 09:08:31.456 Test[715:303] Hello, World!
2014-07-29 09:08:31.457 Test[715:303] 2,2
2014-07-29 09:08:31.458 Test[715:303] c=5
d=8
#import <Foundation/Foundation.h>
@interface OCQWE : NSObject
-(int)funWithNumber1:(int)number1 andNmuber2:(int)number2;
@end
#import "OCQWE.h"
@implementation OCQWE
-(int)funWithNumber1:(int)number1 andNmuber2:(int)number2
return number1+number2;
@end
oc中方法的调用有两种:
第一种:
类名或对象名 方法名;
[ClassOrInstance method];
[ClassOrInstance method:arg1];
[ClassOrInstance method1:arg2 method2:arg2];
第二种:
对象名.方法名; (点语法)
[[ClassOrInstance method:arg1] otherMethod]; //嵌套发送消息 参考技术B 你这个应该是用C++去调用吧。
创建一个静态类 如
CppAdapter.h
CppAdapter.mm
h里面声明静态方法,
mm文件里实现。实现的时候即可用OC。
OC与swift相互调用
一、OC调用swift文件
二、swift调用OC文件
三、注意和总结
添加:
四、自定义桥接文件
一、OC调用swift文件
在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件
名字:工程名-Bridging-Header.h
这个桥接文件是 swift 调用OC文件的时候用的
1、
进入TARGETS ->Build Settings -> Packaging 中
设置Defines Module为YES
设置 Product Module Name ,也可以不设置,默认为工程的名字。这个在后面会用到
2、
在swift写一个类
注意这个类一定要继承NSObject,不然在OC中没法用
var address : String
var gender: String
self.gender = gender
}
3、
在OC需要用到的swift文件中 导入文件 "Product Module Name -Swift.h" 因为 Product Module Name 默认是工程的名字
所以直接导入 #import "工程名-Swift.h"
4、
记着写完先command +B编译一下,如果没有报错就可以在OC文件调用swift中的类了
二、swift调用OC文件
在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件
名字:工程名-Bridging-Header.h
把swift需要用到的OC文件的头文件放到桥接文件里 工程名-Bridging-Header.h
例如:
1、
-(void)actionMake;
2、
3、
三、注意和总结
注意:
四、自定义桥接文件
以上是关于Xcode里怎么使用c 调用oc的方法?的主要内容,如果未能解决你的问题,请参考以下文章