OC-Swift混编(OC引Swift文件和方法)

2字数 411阅读 278

前话

这两天在搞🐒测试,需要在我们的OC项目中引用SwiftMonkeyPaws来显示出猴子的爪子。虽然OC中引Swift混编老生常谈,但是你自己搜索一圈之后发现,基本没文章能直接让你顺利引用并且开发。

大体分成两步:

  1. 创建Swift文件, 然后引用文件
  2. 引用Swift文件中的方法、属性

一.创建Swift文件, 然后引用文件

这一步比较简单,《IOS开发之OC-Switf 混编 -(OC 引 Swift 文件)》这篇文章很简明的说明了步骤。

需要提一下的是:

  1. Swift中我们自己创建普通文件, 比如Person.swift,在使用的时候,不需要想OC中那样先引用(类似这样import 'Person.swift')一下,直接使用即可。只有额外使用其他模块才需要引用,比如说import UIKit.

  2. 为了调用到你自己创建的Swift类,你需要在创建的类中加上@objc声明或者继承NSObject(NSObject的子类也行)
    比如:

    class MonkeyUIPaws: NSObject 
    {
    }
    
    @objc class MonkeyUIPaws
    {
    }
    
    
    

二.引用Swift文件中的方法、属性

在前边的文章中,你仅仅能创建出文件,但是使用Swift的文件中的方法或者属性会不出现自动提示。 解决办法是你需要在对应的方法和属性前边也加上@objc,编译一下,就可以出现自动提示啦,比如:

class MonkeyUIPaws: NSObject 
{
    @objc var paws: MonkeyPaws?
        
    @objc func showMonkeyPawsINUITest ( window: UIWindow ) -> () {
        paws = MonkeyPaws(view: window)    
    }

     @objc class func test() -> () {
        print("test")
    }
}

交流


希望能和大家交流技术
Blog:http://www.lilongcnc.cc