• Swift/Objective-C-Swift与Objective-C混用教程


      简介:我想很多iOS开发者在知道Swift后,心中最大的问题就是如何将Swift应用到原有项目之中。下面我将简要介绍这2种语言的混用方法,内容参考自官方文档 Using Swift with Cocoa and Objective-C ,推荐大家阅读。

      

     在Swift中使用Objective-C类

    • 在Xcode6中新建文件(⌘+N),选择Swift,然后系统框提示是否同时创建XXX-Bridging-Header.h文件(XXX为你的项目名称),确定。

      这个自动创建出来的Bridging-Header.h文件是沟通Swift世界和Objective-C世界的桥梁。任何需要在Swift文件中使用的自定义Objective-C类,必需先引入此Header文件。

      假设项目名称为TestSwift,其中存在Objective-C类Note(在Note.m中定义):

        @interface Note : NSObject
        - (void)log;
        @end
      

      想在Swift中引用这个类,首先需要在TestSwift-Bridging-Header.h文件中import Note:

        #import "Note.h"
      

      然后在Swift代码中就能使用Note了:

        class ViewController: UIViewController {
            override func viewDidLoad() {
                super.viewDidLoad()
      
                var a:Note = Note()
                a.log()
      
            }
        }

    在Objective-C中使用Swift类

    • 想在Objective-C文件中引用Swift文件中定义的类,需要在Objective-C文件中引入一个特殊的头文件: XXX-Swift.h,假设项目名称为 TestSwift,那么这个需要引入的header文件为 TestSwift-Swift.h

      假设存在Book类(在Book.swift文件中定义):

        import Foundation
      
        class Book : NSObject {
            var title:String
      
            init() {
                self.title = "Default Book"
            }
      
            func log() {
                println(self.title)
            }
      
        }
      

      在需要引用Book类的Objective-C文件中,先引入TestSwift-Swift.h头文件

        #import "TestSwift-Swift.h"
      

      然后就能使用Book了:

        Book *book = [Book new];
        [book log];
      

      最后再啰嗦一句,XXX-Swift.h文件在项目中是不可见的(估计此文件在编译时自动生成),在使用时只需遵循苹果既定规则就OK了。

     

  • 相关阅读:
    062 Unique Paths 不同路径
    061 Rotate List 旋转链表
    060 Permutation Sequence 排列序列
    059 Spiral Matrix II 旋转打印矩阵 II
    058 Length of Last Word 最后一个单词的长度
    057 Insert Interval 插入区间
    bzoj3527: [Zjoi2014]力
    bzoj2194: 快速傅立叶之二
    bzoj2820: YY的GCD
    bzoj2005: [Noi2010]能量采集
  • 原文地址:https://www.cnblogs.com/shenyangxiaohuo/p/5310972.html
Copyright © 2020-2023  润新知