Swift与OC的相互调用
Swift经过四年的发展已经趋于成熟,是时候学一下了,感谢公司swift大佬的不吝赐教。心有所感记录一下,如有不足欢迎指正批评。
新建swift项目

新建Swift、OC类文件
可在新建OC文件时,建立桥接头文件,也可以自己新建桥接头文件。

如果没有创建桥接文件,
1.创建头文件: HeaderFileForSwiftAndOC.h
2.找到路径: 项目target -> Bulid Settings -> Objective-C Bridging Header
3.填写:$(SWIFT_MODULE_NAME)/HeaderFileForSwiftAndOC.h
在swift文件与OC文件中填写代码
OC
OCClass.h
#import <Foundation/Foundation.h>
@interface OCClass : NSObject
- (void)ocFunction:(NSString *)str;
@end
OCClass.m
#import "OCClass.h"
#import "SwiftAndOC-Swift.h"//新建swift项目时默认创建,包含了所有swift文件引用
@implementation OCClass
- (void)ocFunction:(NSString *)str{
NSLog(@"\noc func par - str = %@",str);
SwiftObj *swiftObj = [[SwiftObj alloc]init];
[swiftObj swiftFuncWithPar:@"OC -> swift"];
}
@end
Swift
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let ocObj = OCClass();
ocObj.ocFunction("swift -> OC");
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
SwiftObj.swift
import UIKit
class SwiftObj: NSObject {
@objc func swiftFunc(par:String){//@objc 很重要 必须写 不然oc调用时找不到该方法
print("swift func par = \(par)");
}
}
运行项目
控制器打印
2018-06-20 18:01:19.346937+0800 SwiftAndOC[6803:243390]
oc func par = swift -> OC
swift func par = OC -> swift
友情链接:
技术博客 简书主页
Swift与OC的相互调用的更多相关文章
- 苹果系统开发中的混合编程(2):Swift和C的相互调用
在进行Swift和C之间的相互调用时,有必要先了解一下两种语言之间的类型转换关系: C 类型 Swift 类型 bool CBool char, signed char CChar unsig ...
- Swift和OC相互调
在项目中不免会有多中语言开发, 不说别的就我个人而言, 之前一直都是用 OC 写的代码, 封装很多工具类, 而苹果新出来 Swift , 现在项目在向 Swift 过渡, 或者新项目是 Swift , ...
- JS与原生OC/Swift相互调用总结
代码地址如下:http://www.demodashi.com/demo/12754.html JS-OC-Swift JS和OC/Swift相互调用,主要总结了JS和OC交互的三种方式 1.使用UI ...
- OC与swift相互调用
一.OC调用swift文件 二.swift调用OC文件 三.注意和总结 添加: 四.自定义桥接文件 一.OC调用swift文件 在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一 ...
- [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用
创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...
- JS代码和OC代码的相互调用
JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...
- Lua 与 OC 相互调用
本文主要讲如何完成lua和object-c的相互调用. lua是一种脚本语言,可以方便的移植到各种宿主语言中,并且可以支持热更新,在游戏开发中也能当做主要的语言来编写游戏的逻辑,但是要接入 ...
- iOS JS 和 OC交互 / JS 和 native 相互调用
现在app 上越来越多需求是通过UIWebView 来展示html 或者 html5的内容, js 和 native OC代码交互 就非常常见了. js 调用 native OC代码 第一种机制 ( ...
- 转载 OS js oc相互调用(JavaScriptCore) ---js调用iOS ---js里面直接调用方法
OS js oc相互调用(JavaScriptCore) 接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用 ...
随机推荐
- redux中的compose源码分析
1. redux中compose用来组合各种中间件来实现链式调用,例子如下 compose( applyMiddleware, devTools, persistState, createStore ...
- 分布式机器学习系统笔记(一)——模型并行,数据并行,参数平均,ASGD
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 文章索引::"机器学 ...
- [C#] DataTable转成List集合
项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...
- linux下不同tomcat使用不同的jdk版本
环境:Linux tomcat7 使用jdk7 tomcat 8使用jdk8 最近写好了一个程序,需要部署在测试机器上,这个测试机器上已经有了在运行的tomcat7, 我这个程序要求使用tomcat8 ...
- graphql-yoga interface && union 使用
接口就是一个约定,方便数据的约定,union 可以实现数据类型的共享,减少代码量 基本项目 参考 https://github.com/rongfengliang/graphql-yoga-doc ...
- c# 子线程如何通知主线程,个人总结
我要实现的功能如下:程序中有2个线程,主线程和子线程,主线程中有一个变量:X主线程运行中激活子线程,子线程会做出计算改变 X 的值,主线程继续做其它的事,直到 X 的值发生改变时,才会响应,并在tex ...
- java内存上堆和栈的一些理解
多线程上的基本类型:https://blog.csdn.net/championhengyi/article/details/76857401
- socket测试远程地址能否连接并为连接设置超时(转)
public class TestConnect { string hostIp = ""; int port = 3314; public string recMsg = & ...
- jeecms一些经典标签
http://www.121ask.com/thread-5512-1.html [@cms_channel_list]标签详细介绍 http://www.jeecmstheme.com/2014/0 ...
- web常用测试点记录
输入框 1.字符型输入框: 单行文本输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”,特别要注意单引号和&符号.如果禁止直接输入特殊字符时,使用 ...