swift 方法版本控制_swift zbar有swift版本吗 - CSDN
  • Swift版本的差异 Swift 2 error handing 增强 guard 语法 协议支持扩展 Swift 3 新的 GCD 和 Core Graphics NS前缀从老的Foundation类型中移除 内联序列函数sequence 新增fileprivate和open两个权限控制 移除了...

    Swift各版本的差异

    Swift 2

    • error handing 增强
    • guard 语法
    • 协议支持扩展

    Swift 3

    • 新的 GCDCore Graphics
    • NS前缀从老的Foundation类型中移除
    • 内联序列函数sequence
    • 新增fileprivateopen两个权限控制
    • 移除了诸多弃用的特性,比如++、-- 运算符等

    Swift 4

    • extension 中可以访问 private 的属性
    • 类型和协议的组合类型
    • Associated Type 可以追加Where约束语句
    • 新的 Key Paths 语法
    • 下标支持泛型
    • 字符串增强

    Swift 5

    • ABI 稳定
    • Raw strings
    • 标准库新增 Result
    • 定义了与PythonRuby等脚本语言互操作的动态可调用类型

    Swift与OC的主要区别

    编程范式

    • Swift 可以面向协议编程、函数式编程、面向对象编程
    • OC以面向对象编程为主,当然你可以引入类似ReactiveCocoa的类库来进行函数式编程

    类型安全

    • Swift是一门类型安全的语言。 鼓励程序员在代码中清楚明确值的类型。如果代码中使用一个字符串String,那么你不能错误地传递一个整型Int给它。因为Swift是类型安全的,它会在代码编译的时候做类型检查,并且把所有不匹配的类型作为一个错误标记。这样使得程序员在开发中尽可能早地发现和修正错误。
    • OC中,你声明一个NSString变量,仍然可以传一个NSNumber给它,尽管编译器会抱怨,但是你仍然可以作为NSNumber来使用它。

    值类型增强

    • Swift中,典型的有structenum以及tuple都是值类型。
      平时使用的Int、Double、Float、String、Array、Dictionary、Set其实都是用结构体实现的,也是值类型。
    • OC中,NSNumber、NSString以及集合类对象都是指针类型。

    枚举增强

    • Swift的枚举可以使用整型、浮点型、字符串等,还能拥有属性和方法,甚至支持泛型、协议、扩展等等。
    • OC里面的枚举则鸡肋很多。

    泛型

    • Swift中支持泛型,也支持泛型的类型约束等特性。
    • 苹果推出了Swift2.0版本,为了让开发者从OC更好过渡到Swift上,苹果也为OC带来了Generics泛型支持,不过OC的泛型约束也仅停留在编译器警告阶段。

    协议和扩展

    • Swift对协议的支持更加丰富,配合扩展(extension)、泛型、关联类型等可以实现面向协议编程,从而大大提高代码的灵活性。同时,Swift中的protocol还可以用于值类型,如结构体和枚举。
    • OC的协议缺乏强约束,提供的optional特性往往成为很多问题的来源,而如果放弃optional又会让实现代价过大。
    //类定义
    class Person
    {
        var name:String
        var age:Int
        init(name:String,age:Int) {
            self.name = name
            self.age = age
        }
    }
    
    //扩展 要有返回值
    extension Person : CustomStringConvertible
    {
        var description: String
        {
            get{
                return "\(name) age \(age)"
            }
        }
    }
    let zhangsan = Person(name: "666", age: 30)
    

    函数和闭包

    • Swift函数是一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递,可以作为函数返回值返回。
    • OC里面函数仍然是次等公民,需要selector封装或者使用block才能模拟Swift中类似的效果。
    func addTwoNum (num1:Int,num2:Int) -> Int
    {
        return num1+num2
    }
    
    let sum = addTwoNum(num1: 1, num2: 2)
    print(sum)
    
    展开全文
  • Swift 版本历史记录

    千次阅读 2017-04-20 16:24:30
    Swift 版本历史记录 本页内容包括: XCode6.4 Beta Swift语法文档更新XCode6.3正式版 Swift语法文档更新XCode6.2正式版 Swift语法文档更新XCode6.2 Beta3 Swift语法文档更新XCode6.2 Beta2 Swift语法文档更新...

    Swift 版本历史记录


    本页内容包括:

    以下部分是针对XCode6每一次Beta版本直至正式版发布,Swift语法部分的更新归类

    XCode6.4 Beta中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.4 Beta Release Note总结的更改说明:

    发布日期 语法变更记录
    2015-04-13
    • XCode6.4包含了对于构建和调试基于iOS8.4 App的支持

    XCode6.3中Swift语法更新

    注意:苹果此时发布了统一的版本XCode6.3,其中将以前的XCode6.3 Beta系列版本合并, 而XCode6.3共计发布了4次Beta版本,老码团队通过Release Note总结的详细更改说明请参看:Swift语法更新记录表格

    发布日期 语法变更记录
    2015-4-8
    • Swift现在自身提供了一个Set集合类型,更多信息,请看集合

    • @autoclosure现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性@noescape。更多信息,请看属性声明

    • 对于类型属性和方法现在可以使用static关键字作为声明描述符,更多信息,请看类型变量属性

    • Swift现在包含一个as?as!的向下可失败类型转换运算符。更多信息,请看协议遵循性检查

    • 增加了一个新的指导章节,它是关于字符串索引

    • 溢出运算符中移除了溢出除运算符(&/)和求余溢出运算符(&%)

    • 更新了常量和常量属性在声明和构造时的规则,更多信息,请看常量声明

    • 更新了字符串字面量中Unicode标量集的定义,请看字符串字面量中的特殊字符

    • 更新了区间运算符章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。

    • 更新了闭包引用类型章节来澄清对于变量的捕获规则

    • 更新了值溢出章节来澄清有符号整数和无符号整数的溢出行为

    • 更新了协议声明章节来澄清协议声明时的作用域和成员

    • 更新了捕获列表章节来澄清对于闭包捕获列表中的弱引用和无主引用的使用语法。

    • 更新了运算符章节来明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode符号块等

    XCode6.2正式版中Swift语法更新

    注意:苹果此时发布了统一的版本XCode6.2,其中将以前的XCode6.2 Beta系列版本合并

    发布日期 语法变更记录
    2015-02-09
    • 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看常量声明

    • 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看在构造过程中给常量属性赋值

    • 多个可选绑定现在可以在if语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看可选绑定

    • 一个可选链表达式必须出现在后缀表达式中

    • 协议类型转换不再局限于@obj修饰的协议了

    • 在运行时可能会失败的类型转换可以使用as?as!运算符,而确保不会失败的类型转换现在使用as运算符。更多信息,请看类型转换运算符

    XCode6.2 Beta3中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta3 Release Note总结的更改说明:

    发布日期 语法变更记录
    2014-12-19
    • 在对Watch App做消息通知模拟调试时,第一个payload.apns文件将会被默认选择

    • 在为Watch App使用asset catalog时,38mm和42mm尺寸的图片就会被使用

    • 在做Watch App开发时,@IBAction属性支持WKInterfaceSwitchWKInterfaceSlider Swift类型了

    • 现在可以通过Device窗口安装,删除和访问App容器中的数据了。

    XCode6.2 Beta2中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta2 Release Note总结的更改说明:

    发布日期 语法变更记录
    2014-12-10
    • 现在在Interface Builder中可以针对特定的Device设备自定义Watch应用的Layout布局了

    XCode6.2 Beta1中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta1 Release Note总结的更改说明:

    发布日期 语法变更记录
    2014-11-28
    • XCode6.2包含了iOS8.2 SDK,该SDK中包含WatchKit用来开发Apple Watch应用。

    • 在工具集中增加了对WatchKit的支持: 1)UI设计工具增加了Apple Watch应用的界面组件,通知和小部件。 2)增加了调试和性能统计功能 3)增加Apple Watch应用的模拟器帮助调试应用功能

    • 为了使Apple Watch应用能够正常工作,一些具体的参数必须设置: 1)WatchKit中扩展配置文件Info.plist中的NSExtensionAttributes配置项WKAppBundleIdentifier必须和WatchKit App中的通用配置文件中的属性CFBundleIdentifier项目保持一致。2)WatchKit中的CFBundleIdentifier配置项必须和WKCompanionAppBundleIdentifier中的配置项保持一致

    XCode6.1.1中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.1.1 Release Note总结的更改说明:

    发布日期 语法变更记录
    2014-12-2
    • 在SourceKit中一些导致Crash的常见问题被修复,比如名字冲突和遗留废弃数据的问题等。

    • 把纯正的Swift类对象实例赋值给AnyObject量不会再Crash了。

    • 在泛型使用场景下,遵循了协议类要求的构造器方法或者类型方法可以直接调用继承类中的方法了。

    • 修正了InterfaceBuild中如果图片名字含有“/”时,会在OSX10.10上Crash或者无法打开的问题

    XCode6.1中Swift语法更新

    注意:苹果此时发布了统一的版本XCode6.1,其中将以前的XCode6.0.1和XCode6.1 Beta系列版本合并

    发布日期 语法变更记录
    2014-10-16

    XCode6.1 Beta2中Swift语法更新

    注意:苹果此时发布了XCode6.0.1版本(也称为XCode6正式版),此版本用于iOS的开发,同时也发布子版本XCode6.1 Beta2,此版本为OSX开发做准备,以下所述的更改仅对XCode6.1 Beta2有效

    发布日期 语法变更记录
    2014-09-15

    XCode6.1 Beta1中Swift语法更新

    注意:苹果此时发布了XCode6 GM版本,此版本用于iOS的开发,同时也发布子版本XCode6.1 Beta1,此版本为OSX开发做准备,以下所述的更改仅对XCode6.1 Beta1有效

    发布日期 语法变更记录
    2014-09-09

    XCode6 Beta7中Swift语法更新

    注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode Beta7 Release Note总结的更改说明:

    发布日期 语法变更记录
    2014-09-03
    • 实现了内部库的修改和适配,主要包括如下: 1)大量内部类或者函数遵循Optional类型和协议 2)移除大部分函数返回类型隐式解封可选类型的使用

    • 对于泛型的类库函数或接口统一从T!更换为T?T,这样使得语法更加严谨,明确了可能返回为空和不为空的情况

    • 字符类型不能使用+运算法链接,可以以String(C1)+String(2) 的方式实现字符间链接

    • 重写了Sort函数,解决了栈溢出的问题

    XCode6 Beta6中Swift语法更新

    发布日期 语法变更记录
    2014-08-18

    XCode6 Beta5中Swift语法更新

    发布日期 语法变更记录
    2014-08-04

    XCode6 Beta4中Swift语法更新

    发布日期 语法变更记录
    2014-07-21

    XCode6 Beta3中Swift语法更新

    发布日期 语法变更记录
    2014-07-7

    XCode6 Beta2中Swift语法更新

    发布日期 语法变更记录
    2014-07-7
    • 发布新的文档用以详述Swift - 苹果公司针对iOS和OS X应用的全新开发语言

    XCode6 Beta1中Swift语法更新

    发布日期 语法变更记录
    2014-06-3
    • 苹果全球开发者大会WWDC2014召开,发布了苹果最新的开发语言Swift,并释放出XCode6 Beta1版本


    转载地址

    展开全文
  • Swift 3 源代码不兼容旧版本,主要是因为 SE-0005 和 SE-0006 的改进,这些改进不仅影响 Standard Library APIs 命名,还会完全改变 Objective-C APIs (特别是 Cocoa ) 导入到 Swift 的方式。 为了帮助用户迁移到...

    Swift 是苹果遵循 Apache 开源授权协议开源的一门编程语言

    Swift 3 源代码不兼容旧版本,主要是因为 SE-0005 和 SE-0006 的改进,这些改进不仅影响 Standard Library APIs 命名,还会完全改变 Objective-C APIs (特别是 Cocoa ) 导入到 Swift 的方式。

    为了帮助用户迁移到 Swift 3,Xcode 8.0 包含了一个代码迁移工具,可以自动处理大量必需的源变化。

    Swift 3.0是一个主要的语言版本。它不是源兼容与2.2和2.3。它包含了以下的语言变化,经历了迅速的演变过程:

    se-0002:去除局部函数声明的语法

    se-0003:从功能参数去除VaR

    se-0004:去除++和--运算符

    se-0005:更好的翻译成Objective-C API迅速

    se-0006:应用API指南标准库

    se-0007:拆下有条件和递增器回路C

    se-0008:添加序列的自选一个懒惰的flatmap

    se-0016:添加初始化int、uint转换从unsafepointer和unsafemutablepointer

    se-0017:改变托管使用unsafepointer

    se-0019:快速测试

    se-0023:API设计指南

    se-0025:作用域的访问级别

    se-0029:从功能应用程序中删除元组进行内隐行为

    se-0031型装饰调整输入的声明:

    se-0032:先添加(如:)的方法sequencetype

    se-0033:进口Objective-C常数Swift Types

    se-0034:消除线控制语句调试标识符

    se-0035:限制输入捕捉到“noescape语境

    se-0036:需要枚举实例成员实现点前缀

    se-0037:澄清意见与运营商之间的相互作用

    se-0038:包管理器支持C语言的目标

    se-0039现代化操场的文字:

    se-0040:用冒号代替等号的属性参数

    se-0043:“多模式”标签声明变量

    se-0044:进口成员

    se-0046:建立一致的标签的行为在所有参数包括第一标签

    se-0047:违约非void函数所以他们警告在未使用的结果

    se-0048:泛型类型别名

    se-0049:移动@ noescape和@ autoclosure是类型属性

    se-0052:改变iteratortype后无保障

    se-0053:删除显式使用让功能参数

    se-0054:废除implicitlyunwrappedoptional型

    se-0055:使不安全的指针为空性的显式使用可选

    se-0057:进口Objective-C轻质仿制药

    se-0059:更新API命名准则和重写设置相应的API

    se-0060:执行命令默认参数

    se-0061:添加通用的结果和错误处理autoreleasepool()

    se-0062:引用Objective-C关键路径

    se-0063:swiftpm系统模块搜索路径

    se-0064:引用属性getter和setter Objective-C选择器

    se-0065:一种新的收藏和指数模型

    se-0066:规范函数类型参数语法需要括号

    se-0067:增强浮点协议

    se-0069:易变性和基础值类型

    se-0070:使可选的要求objective-c-only

    se-0071:允许(大多数)成员引用关键词

    se-0072:完全消除隐桥接转换迅速

    se-0076:添加重写以unsafepointer源无损对unsafemutablepointer方法复制

    se-0077:改进算子的声明

    se-0081:将WHERE子句结束宣言

    se-0085:包管理器命令名称

    se-0086:滴NS前缀在急速的基础

    se-0088:迅速3命名约定libdispatch现代化

    se-0089:重命名字符串。init (_:T)

    se-0091:提高协议的操作要求

    se-0092:协议typealiases和协议扩展

    se-0093:添加一个公共基础属性切片

    se-0094:添加序列(第一:下一个:)和序列(状态:下一个:)的程序

    se-0095:替代协议< P1,P2和P1和P2 >语法语法

    se-0096:转换dynamictype从物业运营商

    se-0099:重组条件条款

    se-0101:重构sizeof和相关的功能到一个统一的memorylayout结构

    se-0102:把“只能进不能退的属性介绍空不型

    se-0103:使非逃避关闭默认

    se-0106:别名为OSX平台配置测试添加MacOS

    se-0107:unsaferawpointer API

    se-0109:除去布尔协议

    se-0111:删除函数参数的标签类型系统的意义

    se-0112:改进nserror桥接

    se-0113:以浮点加积分取整函数

    se-0114:更新缓冲区的“价值”称为“头”的名字

    se-0115:重命名文字语法协议

    se-0116:引进Objective-C ID作为迅速任何类型

    se-0117:允许区分公共通道和公共overridability

    se-0118:关闭参数名称和标签

    se-0120:修改分区方法签名

    se-0121:删除可选的比较运算符

    se-0124:Int.init(标识符)和uint. init(标识符)应该有一个位模式:标签

    se-0125:删除nonobjectivecbase和isuniquelyreferenced

    se-0127:清理程序指针和缓冲区的程序

    se-0128:改变failable unicodescalar初始化failable

    se-0129:包管理器测试的命名约定

    se-0130:替换重复string.init字符和unicodescalar形式

    se-0131 anyhashable:添加到标准库

    se-0133:重命名为joined() flatten()

    se-0134:重命名两UTF8字符串相关的性质

    se-0135:通过SWIFT版本区分包管理器支持

    se-0136:值的内存布局

    se-0137:避免锁定在传统的协议设计



    展开全文
  • OC中调用Swift代码方法

    千次阅读 2018-06-03 09:27:48
    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...

    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。

    1.首先要在Build Setting中进行相关配置

    2.在Podfile文件中要加上use_frameworks!

    为什么要加use_frameworks!呢?

    首先需要了解下静态库,动态库,Framework的区别

    所谓的库就是一段编译好的二进制文件,加上头文件,相关的资源文件就可供别人使用

    静态库:(静态链接库)(.a)在编译时会将库copy一份到目标程序中,编译完成之后,目标程序不依赖外部的库,也可以运行

                   缺点是会使应用程序变大

    动态库:(.dylib)编译时只存储了指向动态库的引用。
                   可以多个程序指向这个库,在运行时才加载,不会使体积变大,

                   但是运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行

    Framework:实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。

    iOS8 / Xcode 6 之前是无法使用静态库,出现了AppExtension之后可以使用

    对于是否使用Framework,CocoaPods 通过use_frameworks来控制
    1. 不使用use_frameworks! -> static libraries 方式 -> 生成.a文件
    在Podfile中如不加use_frameworks!,cocoapods会生成相应的 .a文件(静态链接库),
    Link Binary With Libraries: libPods-**.a 包含了其他用pod导入有第三库的.a文件
    2.use_frameworks! -> dynamic frameworks 方式 -> 生成.framework文件
    使用了use_frameworks!,cocoapods会生成对应的frameworks文件(包含了头文件,二进制文件,资源文件等等)
    Link Binary With Libraries:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件
    1.纯oc项目中 通过pod导入纯oc项目, 一般都不使用frameworks
    2.swift 项目中通过pod导入swift项目,必须要使用use_frameworks!,在需要使用的到地方 import AFNetworking
    3.swift 项目中通过pod导入OC项目
     1) 使用use_frameworks,在桥接文件里加上#import "AFNetworking/AFNetworking.h"
     2)不使用frameworks,桥接文件加上 #import "AFNetworking.h"



    展开全文
  • Swift控制语句

    2016-07-13 09:45:04
    前言Swift提供了类似C语言的流程控制结构,包括可以多次执行任务的for和while循环。还有基于特定条件选择执行不同代码分支的if、guard和switch语句,还有控制流程跳转到其他代码的break和continue语句。Swift增加了...
  • Swift 中的控制转移语句
  • UIKit框架-基础控件Swift版本: 3.UILabel方法\属性详解
  • http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter1/03_revision_history.html 本页内容包括: XCode6.2 Beta3 Swift语法文档更新 ...XCode6.2 Beta1 Swift语...
  • Swift【App版本更新】

    千次阅读 2017-11-08 15:03:29
    Swift有对应的版本更新库(Siren),有需要的可以参考和使用。 iOS开发中,有时会有这种需求,在AppStore上出现新版本时,应用内弹窗提示用户更新.自动提示更新的实现方案分为两种: 第一种,自己...
  • Swift-方法(Methods)

    2017-04-26 10:10:22
    方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与... 结构体和枚举能够定义方法Swift 与 C/Objective-C 的主要区别之一。在 Objective-C 中,
  • UIKit框架-高级控件Swift版本: 9.UINavigationController方法/属性详解
  • Swift-App版本更新

    千次阅读 2017-04-20 17:41:35
    iOS开发中,有时会有这种需求,在AppStore上出现新版本时,应用内弹窗提示用户更新.自动提示更新的实现方案分为两种: 第一种,自己服务器提供一个接口,通过请求,获取app的相关的版本信息,如:是否需要更新,以及...
  • Swift版本语法的变化

    2018-07-19 10:41:03
    Swift3.0语法变化 swift4.0 新特性 简单复制整理 Swift3.0语法变化 1. swift代码自动更新 Edit-&gt;Convert-&gt;To Current Swift Syntax… 建议只更新自身模块,三方的不要更新 2. ...
  • Swift_3.0 相对于 Swift_2.2 版本发生了哪些的变化。本文件将以最直观的代码对比以及文字分析阐述。
  • Swift2.3 --> Swift3.0 的变化

    千次阅读 2016-10-15 09:45:08
    Swift3.0语法变化写在前面首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert-...手动调出Xcode自动转换Swift2.3 到 Swift3.0弹出语言版本选择界面,选择Covert to Swift3,Ne
  • Swift编程的15个技巧

    2019-07-05 10:06:53
    自2014年9月1.0版发布后,...自从2015年9月Swift 2.0版本发布以来,我们已经开始改用Swift来编译新的项目了。实际上在2016年1月,我们大多数的Swift项目都是iOS应用类的。 相对于Objective-C,Swift是一种编译代码时...
  • 自定义转场动画--Swift3.0版本

    千次阅读 2016-12-23 12:25:45
    转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现、隐藏视图。如果用到了navigationController,还...
  • 1.3 Swift语言演进

    2020-06-15 13:34:27
    1.3 Swift语言演进 小荷才露尖尖角,早有蜻蜓立上头 长风破浪会有时,直挂云帆济沧海 俗话说得好:要想掌握一门学科先关注它的发展史,同样的,要想学好一门语言先看它的进化史。 任何一门卓越的语言,都有其独特...
  • Swift关键字总结下篇

    千次阅读 2019-06-03 16:53:35
    Swift 中有多少关键字? 在Swift官方文档的词汇结构中, 有非常多的关键字, 它们被用于声明中、语句中、表达式中、类中、模式中, 还有以数字符号#开头的关键字, 以及特定上下文环境使用的关键字。本文中涉及的代码...
  • 本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON ...使用Swift时,有许多方法实现单例,这是个麻烦事,因为我们不知道哪个最合适。这里我们来回顾一
1 2 3 4 5 ... 20
收藏数 10,787
精华内容 4,314
关键字:

swift 方法版本控制