ios开发——实用技术篇Swift&Swift调用C、C++、Object
Swift调用C、C++、Object
1.Swift调用C语言
a,首先在项目中添加 CFile 文件命名为CHello,同时产生桥梁文件。
b,创建之后的项目结构
b,在CHello.h文件中编写接口方法,在CHello.c编写实现方法,最后在SwiftCallC-Bridging-Header.h文件中引入CHello.h
CHello.h文件
#ifndef __SwiftCallC__CHello__ #define __SwiftCallC__CHello__ #include <stdio.h> void sayHello(); #endif /* defined(__SwiftCallC__CHello__) */
CHello.c文件
#include "CHello.h"
void sayHello(){
printf("hello\n");
}
SwiftCallC-Bridging-Header.h文件
#import "CHello.h"
2.Swift调用OC语言
a,同理先在项目下添加object-c文件命名为OCHello。这里因为已经创建过文件桥梁,这里就不需要了。
b,在OCHello.h文件中编写接口方法,在OCHello.c编写实现方法,最后在SwiftCallC-Bridging-Header.h文件中引入OCHello.h头文件
OCHello.h文件
#import <Foundation/Foundation.h> @interface OCHello : NSObject //方法没有小括号,真不适应- -! -(void) sayHello; @end
OCHello.m文件
#import "OCHello.h"
@implementation OCHello
-(void)sayHello{
NSLog(@"hello");
}
@end
SwiftCallC-Bridging-Header.h文件
#import "CHello.h" #import "OCHello.h"
c,最后在Swift代码中调用Object-C即可以了~
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var oc = OCHello()
oc.sayHello()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
3.Swift调用C++语言
调用c++代码只要将原来的OCHello.m文件改为OCHello.mm,然后就可以在该文件中引用iostream头文件....^^瞬间有c++的feel了!
最后稍微修改下实现的方法就可以了。
#import "OCHello.h"
#include "iostream"
using namespace std;
@implementation OCHello
-(void)sayHello{
cout<<"Hello"<<endl;
}
@end
ios开发——实用技术篇Swift&Swift调用C、C++、Object的更多相关文章
- ios开发——实用技术篇&Pist转模型详细介绍
Pist转模型详细介绍 关于Plist转模型在iOS开发中是非常常见的,每开一一个项目或者实现一个功能都要用到它,所以今天就给大家讲讲Plist怎么转成模型数据, 前提:必须有一个Plist文件或者通 ...
- ios开发——实用技术篇&网络音频播放
网络音频播放 在日常的iOS开发中,我们通常会遇到媒体播放的问题,XCode中已经为我们提供了功能非常强大的AVFoundation框架和 MediaPlayer框架.其中AVFoundation框架 ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- ios开发——实用技术篇Swift篇&播放MP3
播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...
- ios开发——实用技术篇Swift篇&拍照
拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...
- ios开发——实用技术篇Swift篇&照片选择
照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- ios开发——实用技术篇Swift篇&视频
视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...
- ios开发——实用技术篇Swift篇&录音
录音 // MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? / ...
随机推荐
- BZOJ2870: 最长道路tree
题解: 子树分治的做法可以戳这里:http://blog.csdn.net/iamzky/article/details/41120733 可是码量... 这里介绍另一种好写又快的方法. 我们还是一颗 ...
- EntityFramework版本下载和更新
安装指定版本的Package(例如:EntityFramework 5.0): PM> Install-Package EntityFramework -ProjectName MusicSto ...
- Month Calendar
http://www.codeproject.com/Articles/10840/Another-Month-Calendar#xx4614180xx Another Month Calendar ...
- 34、Android中基于Socket的网络通信(一)
Socket又称”套接字”,应用程序通常通过”套接字”向网络发出请求或者应答网络请求. 在java中,Socket和ServerSocket类库位于java.net包中,ServerSocket用于服 ...
- Java was started but returned exit code=13 C:\ProgramData\Oracle\Java\javapath\javaw.exe
---------------------------Eclipse---------------------------Java was started but returned exit code ...
- Webdriver API (二)
(转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...
- k-近邻分类的Python实现
参见<机器学习实战> # -*- coding:cp936 -*- #=========================================================== ...
- UMA - Unity Multipurpose Avatar
UMA - Unity Multipurpose Avatar UMA version 1.0.1.0R Unity 4.3 What is UMA? UMA - Unity Multipurpose ...
- hdu 1877 又一版 A+B
又一版 A+B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 5-17 Hashing (25分)
The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...