swift调用oc_swift项目oc调用swift - CSDN
  • swift调用oc的方法: 1、桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可) 2、将需要引用的oc文件 .h头文件 添加到桥接类中。   如下: 然后在swift...

    有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用。

     

    swift调用oc的方法:

    1、桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可)

    2、将需要引用的oc文件 .h头文件 添加到桥接类中。

     

    如下:

    然后在swift调用处,直接就可以使用了。

     

    oc调用swift的方法:

    1、首先设置一下Packing

    进入TARGETS ->Build Settings -> Packaging 中

    设置Defines Module为YES

    设置 Product Module Name (这个也可以不设置,直接使用默认就行)

    如图:

     

     2、设置完之后,在需要引用的oc文件头部  import一下,格式为: #import "工程名-Swift.h"

          比如:#import "OrderSystem-Swift.h"

     

    然后就可以使用swift文件了

     

    对了,本文是基于swift创建的工程,两种情况分别对应正常的 swift引用oc文件,以及在oc文件内回头引用swift文件。

    如果是基于oc创建的工程,暂未测试。

    展开全文
  • swift 调用OC

    2019-09-27 11:15:42
    oc文件copy到swift工程,自动生成桥文件 // // NSString+security.h // #import <Foundation/Foundation.h> @interface NSString (security) - (NSString*) test1; + (NSString*) ...
    • https://www.jianshu.com/p/7711a1ecc89d?from=timeline&isappinstalled=0
    • swfit、oc混编

    Swift项目混编OC

    1.swift类中引用oc类及方法

    2.在Swift的项目里,并不会有提示让你去建立OC-Swift桥接文件。那么我们怎样在OC类中去调用Swift呢?请看图六,在Objective-C Bridging Header下面的一行Objective-C Generated Interface Header Name,这个就是OC-Swift桥接文件声明的地方。可以看到其命名为XLLSwiftOCMaxTest-Swift.h。

    ❗️如果第2步失败:build setting下的Objective-C Generated Interface Header Name选项对应的value设置为$(SWIFT_MODULE_NAME)-Swift.h,然后重新进行编译
    oc文件copy到swift工程,自动生成桥文件

    //
    //  NSString+security.h
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSString (security)
    
    - (NSString*) test1;
    
    + (NSString*) test2;
    
    @end
    
    
    //
    //  NSString+security.m
    // 
    
    #import "NSString+security.h"
    
    @implementation NSString (security)
    
    - (NSString*) test1
    {
        return @"test1";
    }
    
    + (NSString*) test2
    {
        return @"test2";
    }
    
    @end
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    在桥文件中,引入oc代码的头文件

    //
    //  Use this file to import your target's public headers that you would like to expose to Swift.
    //
    
    #import "NSString+security.h"
    
    
    

    在swift中使用。

    //
    //  ViewController.swift
    //
    
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            /*
             (1)oc文件copy到swift工程,自动生成桥文件
             (2)在桥文件中,引入oc代码的头文件
             (3)在swift中使用。
             */
            // 调用oc文件中的方法
            let test:NSString = "test"
            print(test.test1())
            print(NSString.test2())
            
        }
    
    
    }
    
    
    
    展开全文
  • Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤:创建一个Swift项目Demo,然后新建一个OC语言的文件如图:创建一个BgImgView的类,选择...

    Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤:

    创建一个Swift项目Demo,然后新建一个OC语言的文件

    如图:

    创建一个BgImgView的类,选择对应的Object-C语言,点击Next按钮

    会弹出提示框,询问是否需要配置一个桥接头文件,点击创建按钮(第三个)


    这个时候会自动生成一个桥接头文件

    现在开始在OC文件中添加需要使用的相关代码

    .h文件

    {
        id _targetT;
        SEL _selT;
    }

    //不带参数的行数
    -(void)testT;
    //待返回参数
    -(NSString *)nameStr;
    //添加一个点击事件方法,模仿按钮的点击
    -(void)addTarget:(id)targetTT withSelector:(SEL)selecTT;

    .m文件

    //不带参数的行数
    -(void)testT
    {
        NSLog(@"调用了testT方法。。。。");
    }
    //待返回参数
    -(NSString *)nameStr
    {
        return @"好好学习,天天向上";
    }
    //添加一个点击事件方法,模仿按钮的点击
    -(void)addTarget:(id)targetTT withSelector:(SEL)selecTT
    {
        _targetT = targetTT;
        _selT = selecTT;
        
        //是否交互
        self.userInteractionEnabled = YES;
    }
    -(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        if (_targetT)
        {
            [_targetT performSelector:_selT withObject:self];
        }
    }

    需要的代码写完后,需要在桥接文件中添加头文件,这里只写需要使用到的OC头文件即可,不需要把所有的OC文件都写上


    然后在 .Swift 文件中使用,

    //创建一个BgImgView对象
            let bgImgV = BgImgView.init(frame:CGRectMake(10, 100, 200, 100));
            bgImgV.image = UIImage.init(named: "22.jpg");
            
            //调用方法
            bgImgV.testT();
            
            //返回参数方法
            let nameStr = bgImgV.nameStr();
            NSLog("输出了。。。%@", nameStr);
            
            //添加点击事件
            bgImgV.addTarget(self, withSelector: #selector(ViewController.imgClick));
            
            self.view.addSubview(bgImgV);
            
        }
        
        func imgClick(imgV:BgImgView){
            NSLog("点击了图片。。。。。");
        }

    最后输出效果:




    展开全文
  • 开发过程中 很可能 把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我...实施方式:把这个 有触摸事件的UIImageView(OFImageView) 用 OC 写成一个对象 然后用swift调用 1,第一次创建OFImage...

    开发过程中 很可能  把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我也是照着视频 学习的 卖弄谈不上 就是一次学习笔记, 具体问题还是具体分析吧.

    需求 给展出出来的的图片 添加触摸点击响应事件 

    实施方式:把这个 有触摸事件的UIImageView(OFImageView) 用 OC 写成一个对象  然后用swift 去调用

    1,第一次创建 OFImageView  时候 会生成一个XXXX-Bridging-Header.h 文件  查了好多资料解释说 这个 桥梁头文件里

    是用来 :

         import 所有Swift需要调用OC的类 的那个库用到的头文件

         swift 需要的头文件 才写在这  不是 oc头文件都要写在这

    当前这个demo 没有过多的需求 暂时 只添加

    "#import "OFImageView.h"

    2, 

    #import <UIKit/UIKit.h>
    
    @interface OFImageView : UIImageView{
        id _target;
        SEL _sel;
    }
    
    - (void)test;
    
    //
    - (void)addtarget:(id)target withSelector:(SEL)sel; //添加了点击事件给这个图片
    
    @end
    
    #import "OFImageView.h"
    
    @implementation OFImageView
    
    - (void)addtarget:(id)target withSelector:(SEL)sel
    {
        _target = target;
        _sel = sel;
        self.userInteractionEnabled = YES;
    }
    
    
    - (void)test
    {
        NSLog(@"print test");
    }
    
    - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        if(_target){
            [_target performSelector:_sel withObject:self afterDelay:0];//触发这个事件
        }
    }
    
    @end
    

     调用

    效果上图片:

    要想让 这个图片点击起来有效果 像按钮一样  就拓展一下 touch方法  即可 此处不赘述 

    分享一篇好文 关于 touch的 " iOS中的触摸事件和手势处理 "

    http://my.oschina.net/aofe/blog/268749

     

    转载于:https://www.cnblogs.com/someonelikeyou/p/5131362.html

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

    2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...
  • 2017.06.02 23:55* 字数 275 阅读 1619评论 0喜欢 3 环境:xcode 8.3.2 系统: MAC OX 方法:使用桥接文件进行桥接,进行使用。...现今只有OC库。 pod的安装不再阐述。 1️⃣创建一个示例工程:T...
  • 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相关文件 // // SumNumbers.h // Dome2test // // Created by 郭文亮 on 2018/11/23. // Copyright © 2018年 finalliang. All rights reserved. // #import &lt;Foundation/Foundation....
  • 在iOS应用的开发中,Swift必将取代OC,两者的趋势是“短期共存,长期取代”。... 我这里会实现一个简单的Swift调用OC的iOS实例,实现过程是十分的简单的。就像我们所有的Hello World一样。具体操作步骤如下:
  • Swift调用OC之NSArray

    2015-03-02 19:59:38
    // Swift调用OC之NSArray // // 1.NSArray与Array的互相转换: // 2.NSArray初始化 // 3.NSArray的常用属性和方法 //  --获取成员个数 //  --获取数组第一个元素 //  --获取数组最后一个元素 //  --...
  • //***********************...// >>>>>>>Swift调用OC之文件操作-NSBundle // // NSBundle内含有: // -- info.plist:这是必须要有的文件,用来配置应用的基本参数信息 // -- 可执行文件 // -- 资源文件:如图像
  • 前面把私有库建立好了,但是在swift工程中调用库时,category中的方法调用不到。尝试了很久之后,发现category中的类方法可以调,但是实例方法不行,所以暂时解决方案是将实例方法改成类方法,将实例以参数的方式传...
  • Swift调用OC之NSDictionary

    2015-03-08 09:55:22
    // Swift调用OC之NSDictionary // // 1.NSArray与Array的互相转换 // 2.NSDictionary初始化 // 3.NSDictionary常用的属性和方法 // --获得成员个数 // --获取Key或Value组成的数组(swiftDictiona
  • swift里混编oc 在桥接头文件里#import oc的.h文件,整个swift工程都能使用该oc文件,在.h里暴露的方法都能被该工程使用 //oc文件 TestOC.h #import @interface TestOC : NSObject -...
  • Swift调用OC之NSString

    2015-02-25 22:28:37
    // Swift调用OC之NSString // //******************* import Foundation //必须的   var int1 = 100 var string = NSString(format: "%@, %@, %i", "Hello","WOrld",int1) //"Hell
  • iOS-Swift调用OC的Block

    2016-12-12 10:55:46
    iOS-Swift调用OC的Block MLSelect内有一个callBack的闭包是这么定义的 typedef void(^callBackBlock)(id obj); Oc的调用方法: MLSelectPhotoPickerViewController *pickerVC = [...
  • //*************************************...// >>>>>>>Swift调用OC之文件操作1 // // // ****  本节内容 **** // // 1.应用的目录结构 // 2.访问文件 // 3.NSURL和NSURLComponents // // //*************
  • swift 调用oc委托

    2015-12-24 13:11:52
    如下委托在swift代码中的实现 @protocol NotifyMessageDelegate NSObject> // 连接服务器消息 - (void) OnConnect:(BOOL) bSuccess; // 用户登陆消息 - (void) OnLogin:(int) dwUserId : (int) ...
  • 原创Blog,转载请注明出处 ...很多Github的库经过很多年的发展,源码都是OC写的,,所以,用Swift调用OC的库就是开发中难免遇到的的一个问题,本文以AFNetworking为例,讲解如何跨语言调用。第一步创
1 2 3 4 5 ... 20
收藏数 9,488
精华内容 3,795
关键字:

swift调用oc