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了。
Swift/Objective-C-Swift与Objective-C混用教程的更多相关文章
- Objective C & Swift & iOS & App
Objective C & Swift & iOS & App https://www.runoob.com/ios/ios-objective-c.html https:// ...
- iOS开发零基础--Swift篇:Swift中数据类型
Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 ...
- Swift版iOS游戏框架Sprite Kit基础教程下册
Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...
- 在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)-b
本节包含内容: Mix and Match 概述(Mix and Match Overview) 在同个应用的 target 中导入(Importing Code from Within the Sa ...
- Swift互用性: 使用Objective-C特性编写Swift类(Swift 2.0版)-b
本节包括内容: 继承Objective-C的类(Inheriting from Objective-C Classes) 采用协议(Adopting Protocols) 编写构造器和析构器(Writ ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- swift.org - About Swift 官网关于notes
About Swifthtml, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; ...
- 对象存储 - Swift 原理 及 Swift+keystone+dashboard 架构搭建
1. 原理介绍 Swift 架构.原理及功能: http://www.cnblogs.com/sammyliu/p/4955241.html 总结的很详细也很全面,受益匪浅,感谢分享. 2. keys ...
- 窥探Swift之使用Web浏览器编译Swift代码以及Swift中的泛型
有的小伙伴会问:博主,没有Mac怎么学Swift语言呢,我想学Swift,但前提得买个Mac.非也,非也.如果你想了解或者初步学习Swift语言的话,你可以登录这个网站:http://swiftstu ...
随机推荐
- 搭建一个单纯学习hibernate的项目
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- SpringBoot配置成Liunx服务
spring boot 可以打包成可执行的脚本来启动,其原理是在打成包时,将shell脚本注入到jar包中 #参考:https://docs.spring.io/spring-boot/docs/1. ...
- ubuntu多节点安装kubernetes
在ubuntu上面多节点安装kubernetes,假设有两台机器 master:192.168.1.84 minion:192.168.1.83 You wil now need to configu ...
- Yii CDbCriteria常用用法
$criteria = new CDbCriteria;$criteria->compare('name',$this->name,true,'OR'); //like部分匹配//$cri ...
- Specified VM install not found: type Standard VM, name jdk1.7
网上抄袭来抄袭去,都说是将“workspace /.metadata/.plugins/org.eclipse.debug.core/.launches/”下的文件都删除掉. 的确,删除了解决问题了, ...
- file文件与base64字符串的相互转换
今天心情不好,不想说话. /** * 文件转base64字符串 * @param file * @return */ public static String fileToBase64(File fi ...
- Spring 4 官方文档学习(十)数据访问之DAO支持
1.介绍 Spring 中 Data Access Object (DAO)支持 的目标是以一种一致的方式更简单的使用JDBC.Hibernate.JPA或JDO等数据访问技术.可以在前面说的几种数据 ...
- e680. 使三元色图像变明变暗
This example demonstrates how to brighten or darken an RGB buffered image by scaling the red, green, ...
- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
DbConnection dbc = database.CreateConnection(); DbTransaction dbtt = null; try { dbc.Open(); dbtt = ...
- 【转】记一次ASP.NET MVC性能优化(实际项目中)
前言 在开发中为了紧赶项目进度而未去关注性能的问题,在项目逐渐稳定下来后发现性能令人感到有点忧伤,于是开始去关注这方面,本篇为记录在开发中遇到的问题并解决,不喜勿喷.注意:以下问题都是在移动端上出现, ...