• 1. swiftoc混编译具体怎么实现,这儿我就重复讲出了,网上有大把的人讲解。 2. 在swiftOC混编的编译环境下, oc能访问swift创建类中的代理? 解决方法如下: 在代理的头部加上 @objc(代理...


    1. swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解。

    2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理?

    解决方法如下:



    在代理的头部加上 @objc(代理名字),这样就在外部就可以访问了,如下图。 然后就和oc中的代理一样,写上协议方法,就可以进行你想要的操作了。



    3. swift中的回调方法介绍:

       1. 通过代理 ,写法大家可以看上面的两张图片,和oc代理差不多。

       2. 通过闭包来实现oc中代码块(Block)的方法,来进行代码回调

           2.1 定义  (swift类)

          

          2.2 调用   (swift类)

        

         2.3 具体回调处:(OC - 类)

         


    本文持续更新, 看oc与swift 混编有哪些雷,需要我们踩

    展开全文
  • 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
    展开全文
  • 解决方案:因为Swift的结构体除了能继承外可以有自己的成员变量和方法,就是一个能继承的类.所以我将struct改成了class,结果还是不行.后来就像因为Swift中的类可以没有父类,而OC的中有基类的,所有类都最终继承至...
    • 最近在一个混编项目中,一个OC类需要去访问一个Swift类,访问其他Swift类都可以,但就没法访问报以下错误:
      报错
    • 点进去看发现该类型是个结构体,如下所示:
      在这里插入图片描述在这里插入图片描述
    • 解决方案:因为Swift的结构体除了不能继承外可以有自己的成员变量和方法,就是一个不能继承的类.所以我将struct改成了class,结果还是不行.后来就像因为Swift中的类可以没有父类,而OC的中有基类的,所有类都最终继承至NSObject,所以就将该CTPCarVideoUploadInfoModel也继承NSObject,果然改完后再OC中就可以访问该类型了.改完后如下:
       class CTPCarVideoUploadInfoModel:NSObject{
       }
      
    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

    在一个老的iOS项目中集成了Swift代码,然后在OC中调用Swift类,一直报错,针对自定义Swift类提示了"use of undeclared identifier"错误,费了老鼻子劲才解决这个问题。

    刚开始一直解决不了,创建了一个Demo项目进行测试却发现没有问题,WTF!

    最后的最后,发现问题居然是因为我手动创建了一个projectname-Swift.h文件,而这个文件是不应该手动创建的。但是问题是我在Xcode工程中删除了它,仍然会提示上面的错误。

    根本解决办法是这样的:在Finder对应的文件夹中删除你手动创建的projectname-Swift.h文件。

    再来猜测一下原因,虽然你在Xcode工程中删除了手动创建的projectname-Swift.h,但是在Xcode中可能还有它的缓存。这种情况可以用这个办法来测试一下,在使用#import "projectname-Swift.h"的地方,按住Cmd键,单击projectname-Swift.h访问projectname-Swift.h源文件,如果这个源文件的内容是空的,那么就意味着工程中还使用的是你手动创建的projectname-Swift.h文件。

    很多文章说要把defines module设置为YES,但好像没有这个必要。

    转载于:https://my.oschina.net/ioslighter/blog/712596

    展开全文
  • 1 swift项目,不到第三方文件,exp:AFN.h不到,要修改build settings 里的User header custome search paths ,改成${SRCROOT},选择recursive.2 oc项目找不到swift文件,要引入工程名-swift.h文件。A.设置...

    1 swift项目,找不到第三方文件,exp:AFN.h找不到,要修改build settings 里的User header custome search paths ,改成${SRCROOT},选择recursive.

    2 oc项目找不到swift文件,要引入工程名-swift.h文件。

    A.设置Product Module Name 为当前工程名。注意:工程名字不要含有特殊字符(例如 +)

    **Target-> Bulid Settings ->输入packa 设置Defines ModuleYes**

    B. 如果未设置,或者更改了工程名字了,报错 找不到文件。尝试用以下命令找到”工程名-Swift.h” 文件,进行比对。

    cd ~/Library/Developer/Xcode/DerivedData find * -iname '*Swift.h'


    3

    展开全文
  • OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程UIViewController *destinationVC = [[NSClassFromString...
  • 最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就一一赘述。 今天研究了一下如何在OC项目中使用swift文件,即OCswift的混编问题,发现在OC中要使用...
  • OC调用SwiftOC调用Swift方法比较简单。但是需要注意以下几点: 1.需要在当前OC类里导入xxx-Swift.h头文件,其中xxx为项目名称(与你的项目配置相关,具体配置方式见上一篇文章) 2.OC类里仅可以调用public的Swift...
  • iOS OC项目调用Swift

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

    2018-06-03 09:27:48
    最近在项目中使用Swift语言写的第三方的框架,所以在这里将OC中使用Swift方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...
  • 之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...
  • 本文旨在帮助开发者快速从OC开发过渡到Swift开发,挑选了一些比较浅显的但是比较常用的Swift语法特性,在介绍的过程中,通常会拿OC中的语言特性作比较,让大家更好的注意到Swift的不同。 另外需要说明的是,笔者也...
  • 1.首先新建个 swift工程 2.在swift 中新建 OC 类 比如新建 Request 类,会自动生成个。...例如: #import "AFNetworking.h" 但是他会提示找不到 4. 在 build Seting 搜索L:User Header Search Paths 5.在 U
  • @OC调用Swift 方法 OC调用传多值参数Swift方法的处理 截止目前, Swift 已经达到4.2版本。有很多优秀的Swift库。有时需要OCSwift混编。学习研究了一下FaceAware 人脸感知开源库。 Swift方法传多值参数及OC调用 ...
  • OCSwift之间的互调很简单,iOS8以后官方给出了这两种语言之间的桥接方案,简单说就是在Swift工程中,通过提示创建的Bridging头文件可以将OC文件和Swift文件衔接在一起,从而可以在OC文件中引用Swift类,或者在...
  • 上篇讲了Swift中使用OCSwift中使用OC,这篇讲下OC中使用Swift类。 在OC中需要用到Swift代码的文件中引入#import “XXX-Swift.h”,XXX是你的工程名称。 特别注意 1、被使用的Swift的类必须是至少继承自NSObject...
  • 背景: 项目里面OC写的文件有个block属性要在swift里面访问, 但是在swift里面怎么都无法访问属性, 然后把block属性加到oc方法参数里面,连方法能访问了. 思考: 第一直觉猜的是swift不支持oc的block了,但是...
  • 出错原因 library not found for -lAFNetworking ...由于本人在开发过程中主要用的是OC语言,所以pod的都是OC库,Podfile里又没加use_frameworks! 所以一直都是.a类型的。后来因为需求需要用到一个只有swift版本...
  • 但是问题来了,当你使用cocoapods导入的OC三方类,swift里面却找不到这个头文件,很是吓JB扯淡的。遇到这些问题真的很少脑筋!还好通过查找资料解决了! 以下是解决方法,希望对大家有帮助 第一步:选择Target -&...
1 2 3 4 5 ... 20
收藏数 11,490
精华内容 4,596