swift项目编译
㈠ swift 教程 swift介绍
1、要使用swift须拥有一台苹果电脑。因为集成开发环境XCode只能运行在OS X系统上。电脑系统必须在OS 10.9.3及以上,电脑必须安装Xcode集成开发环境。
2、下载完成后,双击下载的 dmg 文件安装,安装完成后我们将 Xcode 图标踢移动到应用文件夹。Xcode 安装完成后,就可以开始编写 Swift 代码了。接下来我们在应用文件夹打开 Xcode,打开后在屏幕顶部选择 File => New => Playground。接着 为 playground 设置一个名字并选择 iOS 平台。
3、如果你想创建 OS x 程序,需要导入 Cocoa 包 import Cocoa以上程序载入后,会在Playground 窗口右侧显示程序执行结果。
4、选择一个Single View Application,并点击next,创建一个简单示例app应用。
5、接着我们输入项目名称(ProctName),公司名称(Organization Name),公司标识前缀名(Organization identifier) 还要选择开发语言(Language),选择设备(Devices)。其中Language有两个选项:Objective-c和swift,因为我们是学习swift当然选择swift项了。 点击Next下一步。
6、选择存放的目录,如果要使用Git源代码管理,将勾上Source Control的create git repository on My Mac. 点击create创建项目。
7、项目创建后,默认生成了一个示例文件,可以看到swift将oc中的h和m文件合并成了一个文件(即swift后缀名文件). Main.storyboard相当于xib文件,有比xib更多的功能。
8、打开main.storyboard,默认看到一个简单的空白的应用界面,大小为平板界面大小。 如果开发都只需要开发兼容iphone手机的app,那么可以把Use Auto Layout的勾去掉(默认为勾上)。弹出了一个对话框,让我们选择界面尺寸,iPhone 或 iPad。我们选择iPhone的尺寸。
9、界面添加点内容,在右下方找到Text控件,将它拖入storyboard上,并双击写入文本Hello World!
10、运行一下模拟器(command+R 快捷键或在菜单栏中选择 Proct => Run)。
至此,第一个Swift项目就完成了。
10、swift介绍
《Swift》是一种支持多编程范式和编译式的开源编程语言,苹果于2014年WWDC(苹果开发者大会)发布,用于开发 iOS,OS X 和 watchOS 应用程序。 Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。 Swift 在 Mac OS 和 iOS 平台可以和 Object-C 使用相同的运行环境。 2015年6月8日,苹果于WWDC 2015上宣布,Swift将开放源代码,包括编译器和标准库。
Swift 是一种全新的编程语言,结合了 C 和 Objective-C 的优点,并且不受C兼容性的限制。Swift 采用的安全编程模式添加了很多新特性,这使得编程更简单,更灵活,也更有趣。Swift 在 Foundation 和 Cocoa的基础上构建框架,并且采用了很多 Objective-C 的命名参数以及动态对象模型,并且支持过程式编程和面向对象编程。Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来,既能够开发简单的小程序,也能够构建出一套完整的操作系统。
㈡ 手把手教你使用 Linux 平台上的 Swift
Swift 开源了,它现在变成跨平台的了,开源后的 Swift 不止能运行在 MAC 和 iOS 平台,现在也可以运行在 Linux 平台了。swift.org 网站上面提供了在 Linux 上面安装 Swift 环境的完整指引。当前 Swift 支持 Ubuntu 15.10 和 Ubuntu 14.04 两个版本。
这里我使用Ubuntu 14.04,带领大家体验Linux 平台上的 Swift使用,感兴趣的同学感觉看过来;如果确实帮助到了你,记得投票点赞,让更多的的人看到,非常感谢;
Ubuntu 14.04安装Swift
安装 clang 编译器 clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的一个组件。在终端运行下面命令执行安装: sudo apt-get --assume-yes install clang
获取Swift 包 Swift 包下载地址来自 https://swift.org/download 这个页面,也可以根据你自己的需求配置需要下载的包。; 通过 curl 命令来下载 Swift 包: curl -O https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
安装Swift 1、使用tar 命令,解压下载完成的 Swift 包: tar zxf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz 2、将 Swift 的 bin 目录写入环境变量,这样系统就可以找到我们要执行的命令了: echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:\"${PATH}\"" /home/vagrant/.profile 命令行执行使脚本生效: source /home/vagrant/.profile 3、命令行,输入 swift --version 命令验证 Swift 是否安装成功。 如果安装成功,我们就可以收到类似这样的输出: Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)
使用Ubuntu14.04上的 Swift
创建一个源文件 Swift 安装成功,创建我们的第一个程序,按照惯例,自然是 Hello World 程序。 使用 vim hello.swift 命令创建一个源文件。 然后在 Vim 中输入 i 进入插入模式,在源文件中输入: print("Hello, world") 代码写完啦,我们按下 Esc 进入操作模式,然后输入 :wq 保存退出。
编译运行 源文件创建好之后,使用 swiftc 命令编译代码。 swiftc hello.swift 编译好之后,我们使用 ls 命令查看一下当前目录的内容,除了 hello.swift文件,编译器为我们生成了一个 hello可执行文件。我们可以运行这个文件: ./helloHello 运行成功了 也可以直接使用swift 命令执行源码文件 swift hello.swift Swift 程序不需要导入很多基础的库,也不需要写任何的 main 函数,默认会将外层语句作为程序的入口,这些都融入了现代化的开发思维。
使用 Swift 包管理
开源的 Swift 提供了包管理平台,相信今后无论你使用 Swift 开发一款 iOS APP, 甚至是一个 Linux 服务端程序,你都能够很快的在包管理平台上找到快速解决问题的第三方库。 Swift 开源社区在 Github 上提供了一个例子说明了这个问题,首先我们在 Ubuntu 上面安装 git 命令工具: sudo apt-get --assume-yes install git
将 Swift 包管理的示例从 Github 上面克隆到本地 git clone https://github.com/apple/example-package-dealer.git 克隆成功后,我们用 ls 命令看到这个包里面有 4 个文件: CONTRIBUTING.md Package.swift README.md main.swift 其中 main.swift 是程序的代码文件,而 Package.swift 就是包管理文件,我们来看一下 Package.swift 的内容 这里面定义了我们这个包的名称: name: "Dealer", 然后还定义了它的依赖关系, 它依赖于另外一个代码库;
抓取下来的依赖项目 通过 Package.swift 的定义,swift build 命令就可以根据相应的依赖关系,自动为我们的项目抓取那些需要的第三方库。 运行 swift build 命令安装依赖,可以看到swift build 在替我们把各种项目的依赖关系处理了一遍; 从输出可以看到,我们复制出来的这个项目的依赖项目,又依赖了其他的项目,形成了一个依赖链条。 当 swift build 命令运行完成自后,我们会发现项目的根目录中多了一个 Packages 目录,这个目录里面存放了我们抓取下来的依赖项目:
㈢ Swift 现已正式登陆 Windows 10,开发者如何在该系统上构建和调试项目
结论:苹果的Swift编程语言已经正式支持Windows 10系统,开发者现在可以直接在该操作系统上进行代码构建、运行和调试,无需再受限于Mac或iOS平台。Apple Insider报道,苹果已发布Swift工具链镜像,可供Windows 10用户从开源项目获取。这一里程碑式的更新意味着,开发者无需跨平台操作,即可利用Swift的全部潜力进行应用开发。
Swift工具链的核心组成部分包括编译器、标准库和核心库,这些都是构建功能丰富应用的关键组件。Swift核心团队成员、谷歌大脑的Saleem Ablrasool通过实例说明,他使用Swift和Visual Studio 2019成功创建了一个基本计算器应用,尽管该应用使用了CMake构建,但Windows的Swift包管理器功能仍在持续发展中。
Readdle这样的开发者已经在Windows 10上尝试并积极应用Swift开发,例如他们对Spark电子邮件平台的跨平台版本进行了优化,取得了积极反响。对于那些希望投身于Swift项目或希望改进现有项目的人来说,这个工具链无疑是一个宝贵资源。
现在,欢迎所有对Swift在Windows 10上的应用感兴趣的开发者下载并试用这一工具链,同时,任何遇到的问题或建议,都可通过Swift Bug Tracker进行反馈。
㈣ ios OC、swift混编制作framework
按照文档一步一步来
新建一个基于单页面工程,然后新建一个一个Target,选中Cocoa Touch Framework。然后,分别新建一个Swift文件和Objective C类,注意Target Member Ship选中Framework。类的内容如下:
OCSource.h
[图片上传失败...(image-8dab68-1634619754604)]
OCSource.m
[图片上传失败...(image-2c9071-1634619754604)]
Swift调用OC
新建SwiftSource.swift
[图片上传失败...(image-34eca8-1634619754604)]
然后,按照文档中,为了让Swift文件访问Objective C文件,我们应该在umbrella header,也就是MixFramework.h中,暴露所需要的header。
也就是,MixFramework.h,
[图片上传失败...(image-b166c3-1634619754604)]
然后,自信满满的点击build。
Boom~~~,编译不通过。
[图片上传失败...(image-6ca763-1634619754604)]
原因:OCSource.h默认编译的时候是Project权限. 为了在umbrella header中使用,要把这个文件的权限改成Public
按照图中的方式拖过去即可。
[图片上传失败...(image-f2d31d-1634619754604)]
嗯,现在build,可以看到build成功了。
OC调用Swift
在SwiftSource.swift中,增加一个类,
[图片上传失败...(image-98ce8c-1634619754604)]
然后,为了在OC中调用Swift的方法,我们需要导入头文件,这时候,OCSource.m文件内容如下
[图片上传失败...(image-f61fb3-1634619754604)]
然后,build,发现成功了,很开心。
外部调用
在ViewController.swift中,我们调用Framework中的内容。
[图片上传失败...(image-6be19c-1634619754604)]
然后运行,发现控制台打印出
[图片上传失败...(image-4b70-1634619754604)]
嗯,framework打包成功了。
问题
通常,我们希望暴露给外部的接口是纯Swift,而OC文件的具体接口应该隐藏,这就是我标题中的优雅两个字的含义。
如果你好奇,你会发现,在ViewController.swift中你可以这么调用
[图片上传失败...(image-fefccf-1634619754604)]
也就是说,OC的内容也暴露出来了,这破坏了Framework的封装特性。
通过查看MixFramework的编译结果,发现最后暴露出的接口是这样子的
[图片上传失败...(image-8b0488-1634619754604)]
这一行,把OC对应的实现暴露出来了
[图片上传失败...(image-9c74a7-1634619754604)]
优雅的解决方案
不再通过umbrella header的方式让framework中的Swift调用OC方法。而是通过molemap。
新建一个mole.molemap文件,内容如下
[图片上传失败...(image-633a91-1634619754604)]
[图片上传失败...(image-d30f90-1634619754604)]
这里的#(SRCROOT)是XCode的宏,会自动替换成项目所在的根目录,这里输入的路径是mole.molemap文件所在的路径。
然后,删除MixFramework.h(umbrella header)中#import 的OC header。
把OCSource.h的权限改回默认的project。
[图片上传失败...(image-291cca-1634619754604)]
再编译,发现OC的类被隐藏了。