oc swift库 调用pod_swift 调用 oc pod库 - CSDN
  • OCSwift混编Pod引入第三方的问题 问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是...

    OC和Swift混编Pod引入第三方库的问题

    问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是xcode总是报错找不到该文件。接下来详细描述问题和原因。

    1.为了在Swift项目中引入OC 开源框架,我使用了pod工具引入。然后下图:

    2.之后创建桥接文件:

    3.然后就是在配置文件中设置桥接文件路径:

    4.到这里就看似完成了,一切都很简单。但是,当编译时问题就来了,如下图:

    原因是找不到该文件。可是明明使用了pod工具引入了啊。(注:百度清一色的都是以上步骤,该问题并未在百度查询到问题原因和解决方案。所谓博客恐怕都是出自一人)

    5.在作了大量的测试和摸索后,终于得意解决。问题的根本原因就是我之前用pod引入了Swift开源框架,为了方便,在引入OC开源框架时我同样是使用了pod工具。我们回看第一步

    Swift框架:

    pod 'SnapKit''~> 0.30.0.beta1'

    pod 'Alamofire''~> 3.4.0'

    pod 'SwiftyJSON''~> 2.3.2'


    OC框架:

    pod 'SVProgressHUD'

    pod 'MJRefresh'

    同样还有一句话:

     use_frameworks!


    没错,简单的说,在OC开发时并不用使用该语句,但是Swift开发时使用pod工具就需要加上这句话。这就导致了OC 和 Swift公用同一个项目工程中的pod时造成了以上显示的错误,即使其他步骤都没有错,但是错误原因就是找不到文件。

    至于为什么会这样,我联想到了之前看到过的一篇文章好像是有这么一句话(记不太清楚了)OC是动态语言,而Swift是静态语言,这就是为什么两者在使用pod时关于这句话是否要加上的浅显原因(其实深入的东西就需要接着百度了)

    既然原因找到了,解决它就好办了,我们只要把这两种语言的开源框架分开管理就可以了。。。。



    展开全文
  • swift调用oc: 需要在统一的bridge头文件(xxx-Bridging-Header.h)里面import,然后即可使用。 oc调用swift: 需要在暴露出来的方法和属性上加@objc否则不可用。需要在工程配置里面做一些小改动。 具体设置和内容...

    swift调用oc: 需要在统一的bridge头文件(xxx-Bridging-Header.h)里面import,然后即可使用。

    oc调用swift: 需要在暴露出来的方法和属性上加@objc否则不可用;且文件的类需要继承自NSObject或NSObject的子类。另外需要在工程配置里面做一些小改动。

    具体设置和内容可以参考:
    https://www.jianshu.com/p/754396e7e1bd
    https://www.jianshu.com/p/e781748c9807

    强烈推荐,很详细的一篇:
    https://www.jianshu.com/p/2ed48b954612

    官方文档链接:
    https://developer.apple.com/documentation/swift
    (最下面是混编相关资料,很全,可随时在这里查)

    展开全文
  • SwiftOC混编

    2020-07-30 23:30:03
    SwiftOC混编,OC项目下SwiftOC的互相调用Swift项目下SwiftOC的相互调用
  • WWDC推出了SwiftUI、Combine,仅Swift可用~为了能顺利的也吃上SwiftUI,我也打算将自己的项目先从OC慢慢迁移到Swift,所以~一起从混编开始! 创建Swift的view 正常创建文件,语言选swift 创建Bridging Header 上...

    WWDC推出了SwiftUI、Combine,仅Swift可用~为了能顺利的也吃上SwiftUI,我也打算将自己的项目先从OC慢慢迁移到Swift,所以~一起从混编开始!

    创建Swift的view

    正常创建文件,语言选swift

    创建Bridging Header

    上一步,点完next,系统会提示如下弹框。点create Bridging Header

    oc使用Swift文件

    1. 导入头文件,在要使用swift的文件的地方都导入此头文件,或者将此头文件放入pch里面,即可使用swift的文件
    #import "OCAndSwift-Swift.h" //项目名称-Swift.h
    复制代码

    点击进去,可以看到我刚刚建的文件的,如下所示,有初始化的方法,和我暴露在外面的方法~所有swift文件都会在这个文件里面被“转化”成OC

    2) oc里面调用swift,像调用oc一样,完全看不出来。

        ZTSwiftView *view = [[ZTSwiftView alloc]init];
        [self.view addSubview:view];
        
        __weak typeof(view) weakView = view;
        //点了确认后执行此block
        view.selectColorBlockSwift = ^(NSString * _Nonnull str) {
            __strong typeof(weakView) strongView = weakView;
            //将string赋值给view的button
            [strongView reloadBtnTitleWithTitle:str];
        };
    复制代码

    其中reloadBtnTitleWithTitle方法是swift里面的方法,swift方法想被oc调用,前面需带objc,如下

        @objc public func reloadBtnTitle(title:NSString){
            confirmButton.backgroundColor = .white
            confirmButton.setTitle(title as String, for: .normal)
        }
    复制代码

    Swift里面使用oc的view

    1. 将oc的view放入之前系统创建的bridgeHeader里面

    2) swift里面使用如下,像是swiftView一样,正常使用

            let ocView = ZTOCView()
            ocView.frame = CGRect(x: 0, y: 0, width: contentView.frame.width, height: contentView.frame.height)
            contentView.addSubview(ocView)
            
            weak var weakSelf = self
            //点ocView中间的view后的block
            ocView.changeColorBlock = {(color : UIColor?) -> Void in
            
                weakSelf?.confirmButton.backgroundColor = color
                weakSelf?.confirmButton.setTitle("确定", for: .normal)
            }
    复制代码

    最后

    效果图如下,是个有些丑的demo~

    代码 github.com/zttina/OCAn…

    展开全文
  • 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 ...

    为防止出问题,建议以这样的方法做:
    1.建一个OC工程命名为SwiftOC
    这里写图片描述
    2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h”
    这里写图片描述

    这里写图片描述
    3.配置工程
    设置Defines Module 为Yes
    这里写图片描述
    设置Product Module Name 为当前工程名
    这里写图片描述

    此时系统会为工程创建一个“上面所填Product Module Name-Swift.h”的文件,此文件不可手动创建,必须使用系统创建的

    4.创建一个Test2.swift
    这里写图片描述

    import Foundation
    public class HH:NSObject
    {
    
        public func show()
        {
         print("hello")
        }
    }

    5.在OC文件中引用swift

    
    #import "ViewController.h"
    //导入时需要手动打上,系统没有提示
    #import "SwiftOC-Swift.h"
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        HH *VC=[[HH alloc]init];
        [VC show];
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    展开全文
  • OCSwift的相互调用

    2019-09-10 20:45:39
    OCSwift的相互调用 Swift 调用OC只需要在桥接文件中导入头文件就可以了 #import "MineLoctionViewController.h"  加入 @objcMembers 主要是为了OC能够调用 Oc调用Swift 需要导入#impor...
    OC和Swift的相互调用
    Swift 调用OC只需要在桥接文件中导入头文件就可以了
    #import "MineLoctionViewController.h"
    
    
    
    加入
    
    @objcMembers 
    主要是为了OC能够调用
    
    Oc调用Swift 需要导入#import “项目名称-Swift.h"
    
    

     

    转载于:https://my.oschina.net/wayzhu/blog/3068586

    展开全文
  • 2017.06.02 23:55* 字数 275 阅读 1619评论 0喜欢 3 环境:xcode 8.3.2 系统: MAC OX 方法:使用桥接文件进行桥接,进行使用。...现今只有OC库pod的安装不再阐述。 1️⃣创建一个示例工程:T...
  • 首先就是在 targets->Build Setting ->Packaging 中设置 Defines Module为YES  然后创建swift文件时会生成"文件名-Bridging-Header.h"这样一个桥接文件 怎样使用cocoapods就不多... 因为swift使用的是框架而不是静态
  • 这里主要说几个关于cocoapods导入三方需要注意的问题和我遇到的坑 1、swift语言使用cocoapods配置...2、swift调用oc的三方  a、要建立一个桥接文件,然后在target——>build setting中搜索bridg 把Objectiv
  • pod组件化,swift,objective-c混合开发pod 组件化管理swift objective-c混合开发pod注意事项 pod 组件化管理 创建swift工程(PodSwift) 创建objective-c工程(httpmanager) 进入工程目录下创建spec pod lib ...
  • iOS OC项目调用Swift

    2017-03-17 13:51:27
    网上有很多关于OC项目中使用Swift类的方法,但是亲自试了之后,发现不够详细,多次尝试后,终于找出详细的方法。 现把方法和遇到的问题,记录下来,方便其他同仁借鉴.
  • swiftoc的互相调用

    2015-11-25 22:32:03
    swiftoc的代码是可以互相调用的 创建一个类 继承自nsobject 随后在,h文件中声明一个方法,随后再.m文件中实现这个方法 在桥接文件中 添加进这个文件的头文件 随后就可以直接在swift的代码中调佣这个OC的代码 ...
  • #### 1、OC工程项目导入Swift 版本的framework静态后,模拟器和真机编译都通过,但是模拟器环境下无法调用库里面的类,真机环境可以 #### 2、如果是Swift项目工程引入这个Swift静态没有任何问题 1、 真机可以...
  • OCSwift混合编程引用Pods管理的模块 用Pods安装需要使用的模块后,打开.xcworkspace文件,然后按下图所示设置一下User Header Search Paths: swift中创建OC桥接文件 a. 自动创建桥接文件(仅限于swift工程中第...
  • OC 项目中使用基于 Swift 的 CocoaPods 随着 Swift 的流行,各种神奇的也开始有对应的 Swift 版本了,而其中一些更神奇的却只有 Swift 版本… 正巧接手了一个前人用 Swift 写的项目,里面有一个...
  • swift开发过程中我们难免会使用一些OC的开源来附注项目开发。这就涉及到OCswift的混编了,正好本人最近也在模仿斗鱼直播的项目,自己也使用了OC的第三方,今天就给大家介绍一下自己的使用过程。 一、导入第...
  • 最近想试着开始写学着swift项目了,然后就在用cocoapods pod下来的第三方框架的时候出现了问题,先以为是自己创建桥接文件后,配置出错了,但是网上的那些文章都还是能把桥接文件处理好,言归正传,先上图 ...
  • OC调用Swift代码方法

    2018-06-03 09:27:48
    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...
  • 正好这两天加了一个swift学习群想继续学习swift,发现好多swift初学者,在混编这块还不是很清楚,当初自己初学的时候也经历了这么一个痛苦的过程,所以把自己的痛苦过程也写一下。当然这也是第一次写文章,想想有点...
  • 前面把私有建立好了,但是在swift工程中调用库时,category中的方法调用不到。尝试了很久之后,发现category中的类方法可以调,但是实例方法不行,所以暂时解决方案是将实例方法改成类方法,将实例以参数的方式传...
1 2 3 4 5 ... 20
收藏数 848
精华内容 339
关键字:

oc swift库 调用pod