oc调用swift_oc调用swift 单例 - CSDN
精华内容
参与话题
  • [Swift]1.在OC项目里的OC代码调用Swift方法,Swift代码里调用OC代码。2.在Swift项目里的Swift代码里调用OC代码,OC代码调用Swift方法。
  • OC 引用并调用Swift文件

    千次阅读 2019-07-24 17:09:03
    1、我们先创建一个OC的项目MyFirstOCUseSwiftDemo 2、我们点击Target看到右边选择Build Settings,把Defines Module改为YES, 3、我们回到工程目录下,New File一个Swift File,起名为MyFristSwift,此时会...

    1、我们先创建一个OC的项目MyFirstOCUseSwiftDemo

    2、我们点击Target看到右边选择Build Settings,把Defines Module改为YES,

    3、我们回到工程目录下,New File一个Swift File,起名为MyFristSwift,此时会弹框提示我们是否创建一个桥接文件,如图:

    4、创建好之后我们再次选择项目的Target看到右侧的Build Settings选项,往下滑动会看到这样一个目录:

    此时是系统为我们自动创建了桥接"项目名-Swift"文件和"项目名-Bridging-Header"文件;

    5、接下来我们开始创建自己的Swift文件,新建一个Swift起名为:MyFristSwift,它看起来应该长这样:

    import Foundation
    import UIKit
    
    
    class MyFristSwift: UIViewController {
        
        override func viewDidLoad() {
            super.viewDidLoad()
         
            self.view.backgroundColor = UIColor.green
    
        }
        
        
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }

    6、接下来我们要在OC的控制器(也就是你想要调用Swift的OC控制器)里边import一下第四步图中展示的swift文件,此时注意的是这个头文件是手动写的,你也可以在第四步中复制Objcective-C Generated Interface Header Name对应的值;

    7、好了,这是最后一步,在OC控制器中 创建一个按钮进入我们的swift页面吧,它应该是这样的:

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //创建属于我们自己的按钮
        [self.view addSubview:self.nextBtn];
    
    }
    - (void)nextBtnClicked:(UIButton *)btn{
        // 使用Swift的类
        MyFristSwift *swiftVC = [[MyFristSwift alloc] init];
        [self presentViewController:swiftVC animated:YES completion:nil];
    }
    -(UIButton *)nextBtn{
        
        if (!_nextBtn) {
            
            _nextBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            _nextBtn.frame = CGRectMake(40, 100, 100, 44);
            _nextBtn.layer.masksToBounds = YES;
            _nextBtn.layer.cornerRadius = 4;
            _nextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
            [_nextBtn setTitle:@"进入Swift" forState:UIControlStateNormal];
            [_nextBtn setBackgroundColor:[UIColor brownColor]];
            [_nextBtn addTarget:self action:@selector(nextBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
        }
        return _nextBtn;
    }
    

     

    展开全文
  • OC 调用 Swift 方法

    千次阅读 2018-09-06 11:47:34
    1.新建Swift文件之前做以下设置 2.创建Swift文件后,会提示创建桥接文件,点击创建 3.Swift 类 import Foundation class RealmManager: NSObject { override init() { super.init() } @objc func ...

    1.新建Swift文件之前做以下设置
    这里写图片描述

    2.创建Swift文件后,会提示创建桥接文件,点击创建

    3.Swift 类

    import Foundation
    
    class RealmManager: NSObject {
        override init() {
            super.init()
        }
        @objc func getConins() -> String {
            return "\(Setting.coins),\(Setting.currentLevel)"
        }
    }

    Swift的类必须继承NSObject 否则无法识别
    Swift的方法必须用@objc 修饰,否则,无法识别

    4.在OC中导入Swift引用
    、#import “plus-Swift.h”

    plus 就是上边截图的Product Name

    展开全文
  • OC代码中使用Swift文件的实践

    千次阅读 2018-05-31 11:32:11
    最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就不一一赘述。 今天研究了一下如何在OC项目中使用swift文件,即OCswift的混编问题,发现在OC中要使用...

    最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就不一一赘述。
    今天研究了一下如何在OC项目中使用swift文件,即OC和swift的混编问题,发现在OC中要使用swift文件也是蛮简单的,实践过程列如下:
    1)首先随便创建了一个OC项目,就叫 DetialViewDemo
    这里写图片描述
    2)因为Swift的代码默认是使用module管理的,所以两者混编的最重要的一步,就是把我们的Swift代码作为一个module暴露给OC工程,具体步骤如下:
    这里写图片描述
    3)创建一个swift文件或者将已有的swift文件拖入项目中,我这里是拖入了一个练习swift写的一个类:
    这里写图片描述
    注意点:swift文件添加的时候会提示是否添加桥接文件,直接点击不创建就OK
    4)好了,文件都准备好了,接下来就需要在使用到swift文件的类中引入”Product Module Name-Swift.h”,其中Product Module Name其实就是项目的名称,这个在上面配置Module的图中也能看到,然后我们就可以愉快地和swift进行玩耍了
    这里写图片描述
    注意:引入Product Module Name-Swift.h的时候不一定自动提示,手写之后编译就可以了

    当然,我很好奇这是怎么回事,然后我就command+点击 Person 进入了内部查看,发现原来苹果将所有的swift文件中的代码转成了oc的代码,不管你引入多少个swift文件,都会一股脑在Product Module Name-Swift.h文件中翻译成oc文件以便我们oc程序调用
    这里写图片描述

    怎么样,很强大吧,朋友们赶紧转过来吧,开始自己的swift开发,这绝对是苹果的未来啊!

    展开全文
  • OC调用Swift代码方法

    千次阅读 2018-06-03 09:27:48
    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...

    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。

    1.首先要在Build Setting中进行相关配置

    2.在Podfile文件中要加上use_frameworks!

    为什么要加use_frameworks!呢?

    首先需要了解下静态库,动态库,Framework的区别

    所谓的库就是一段编译好的二进制文件,加上头文件,相关的资源文件就可供别人使用

    静态库:(静态链接库)(.a)在编译时会将库copy一份到目标程序中,编译完成之后,目标程序不依赖外部的库,也可以运行

                   缺点是会使应用程序变大

    动态库:(.dylib)编译时只存储了指向动态库的引用。
                   可以多个程序指向这个库,在运行时才加载,不会使体积变大,

                   但是运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行

    Framework:实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。

    iOS8 / Xcode 6 之前是无法使用静态库,出现了AppExtension之后可以使用

    对于是否使用Framework,CocoaPods 通过use_frameworks来控制
    1. 不使用use_frameworks! -> static libraries 方式 -> 生成.a文件
    在Podfile中如不加use_frameworks!,cocoapods会生成相应的 .a文件(静态链接库),
    Link Binary With Libraries: libPods-**.a 包含了其他用pod导入有第三库的.a文件
    2.use_frameworks! -> dynamic frameworks 方式 -> 生成.framework文件
    使用了use_frameworks!,cocoapods会生成对应的frameworks文件(包含了头文件,二进制文件,资源文件等等)
    Link Binary With Libraries:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件
    1.纯oc项目中 通过pod导入纯oc项目, 一般都不使用frameworks
    2.swift 项目中通过pod导入swift项目,必须要使用use_frameworks!,在需要使用的到地方 import AFNetworking
    3.swift 项目中通过pod导入OC项目
     1) 使用use_frameworks,在桥接文件里加上#import "AFNetworking/AFNetworking.h"
     2)不使用frameworks,桥接文件加上 #import "AFNetworking.h"



    展开全文
  • OC工程调用Swift方法

    万次阅读 2017-01-11 11:45:08
    1.建一个OC工程命名为SwiftOC 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h” 3.配置工程 设置Defines Module 为Yes ...
  • OC调用Swift方法

    千次阅读 2018-05-02 15:36:48
    第一步:创建桥接文件第二步:配置桥接文件第三步:创建pch文件并配置其路径 第四步:在pch文件中导入如下头文件,注意:...,这里的xxx就是第二步中的Module name, 注意不要写错了 第五步:OC中直接调用Swift...
  • iOS OC项目调用Swift

    万次阅读 2017-03-17 13:51:27
    网上有很多关于OC项目中使用Swift类的方法,但是亲自试了之后,发现不够详细,多次尝试后,终于找出详细的方法。 现把方法和遇到的问题,记录下来,方便其他同仁借鉴.
  • oc调用swift: 需要在暴露出来的方法和属性上加@objc否则不可用。需要在工程配置里面做一些小改动。 具体设置和内容可以参考: https://www.jianshu.com/p/754396e7e1bd https://www.jianshu.com/...
  • Swift调用OC枚举

    千次阅读 2019-09-17 14:35:00
    OC中 typedef NS_ENUM (NSUInteger, EVDeviceType) { EVDeviceAudioCapture = 0, EVDeviceAudioPlayback = 1, EVDeviceVideoCapture = 2 }; Swift EVDeviceType.audioCapture
  • swiftOC混编(方法调用

    万次阅读 2016-02-12 10:35:31
    OC调用SwiftOC调用Swift方法比较简单。但是需要注意以下几点: 1.需要在当前OC类里导入xxx-Swift.h头文件,其中xxx为项目名称(与你的项目配置相关,具体配置方式见上一篇文章) 2.OC类里仅可以调用public的Swift...
  • swift项目中,OCswift文件相互调用

    千次阅读 2017-08-10 13:40:38
    有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用。   swift调用oc的方法: ...1、桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可) ...oc调用swift
  • Swift调用OC代理

    千次阅读 2019-09-17 14:51:16
    oc @protocol EVCommonDelegate <NSObject> @optional - (void)onLoginSucceed:(EVUserInfo *_Nonnull)user; @end swift class CloudLoginVC: UIViewController, EVEngineDelegate func onLoginSucceed...
  • 1. swiftoc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解。 2. 在swiftOC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部加上 @objc(代理...
  • SwiftOC 互相调用

    千次阅读 2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...
  • oc调用swift中的struct

    千次阅读 2016-09-05 10:26:53
    oc调用swift中的struct  在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面,你是发现是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一...
  • 之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...
  • 在项目里交叉使用SwiftOC

    万次阅读 2014-06-27 16:45:14
    SwiftOC的兼容性使得你可以在项目里使用Swift+OC的方式编写应用程序,称为混合+匹配(mix and match),用这种方式可以一边使用享受新语言的快速特性,一边无缝的接合你已有的OC代码(原文听起来好NB的样子,其实也就...
  • Swift 中如何调用OC的framework

    千次阅读 2019-09-17 14:17:54
    建立桥接头文件 设置桥接文件位置 引入需要的framework #ifndef bridge_h #define bridge_h #import "AFNetworking.h...直接调用 var dataTask = AFHTTPSessionManager.init().post(<#T##URLString: String#...
  • Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好...这里主要介绍swift类中调用OC方法和swift类中调用C函数以及OC类中调用swift的函数这三种类型的混编.
1 2 3 4 5 ... 20
收藏数 9,306
精华内容 3,722
关键字:

oc调用swift