时间:2014-06-03 20:28:33 作者:啤酒 阅读:16777215
目录
1 简介
2 Swift入门
3 简单值
4 控制流
5 函数与闭包
6 对象与类
7 枚举与结构
1 简介
今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍《The Swift Programming Language》中摘录和提取而成。希望对各位的iOS&OSX开发有所帮助。
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。
Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Automatic Reference Counting,自动引用计数)来简化内存管理。我们的框架栈则一直基于Cocoa。Objective-C进化支持了块、collection literal和模块,允许现代语言的框架无需深入即可使用。(by gashero)感谢这些基础工作,才使得可以在Apple软件开发中引入新的编程语言。
Objective-C开发者会感到Swift的似曾相识。Swift采用了Objective-C的命名参数和动态对象模型。提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能和结合面向过程和面向对象的功能。
Swift对新的程序员也是友好的。他是工业级品质的系统编程语言,却又像脚本语言一样的友好。他支持playground,允许程序员实验一段Swift代码功能并立即看到结果,而无需麻烦的构建和运行一个应用。
Swift集成了现代编程语言思想,以及Apple工程文化的智慧。编译器是按照性能优化的,而语言是为开发优化的,无需互相折中。(by gashero)可以从"Hello, world"开始学起并过渡到整个系统。所有这些使得Swift成为Apple软件开发者创新的源泉。
Swift是编写iOS和OSX应用的梦幻方式,并且会持续推进新功能的引入。我们迫不及待的看到你用他来做点什么。
2 Swift入门
一个新语言的学习应该从打印"Hello, world"开始。在Swift,就是一行:
println("Hello, world")
如果你写过C或Objective-C代码,这个语法看起来很熟悉,在Swift,这就是完整的程序了。你无需导入(import)一个单独的库供输入输出和字符串处理。全局范围的代码就是用于程序的入口,所以你无需编写一个 main() 函数。你也无需在每个语句后写分号。
这个入门会给出足够的信息教你完成一个编程任务。无需担心你还不理解一些东西,所有没解释清楚的,会在本书后续详细讲解。
Note
作为最佳实践,可以将本章在Xcode的playground中打开。Playground允许你编辑代码并立即看到结果。
3 简单值
使用 let 来定义常量, var 定义变量。常量的值无需在编译时指定,但是至少要赋值一次。这意味着你可以使用常量来命名一个值,你发现只需一次确定,却用在多个地方。
var myVariable = 42
myVariable = 50
let myConstant = 42
Note
gashero注记
这里的常量定义类似于函数式编程语言中的变量,一次赋值后就无法修改。多多使用有益健康。
一个常量或变量必须与赋值时拥有相同的类型。因此你不用严格定义类型。提供一个值就可以创建常量或变量,并让编译器推断其类型。在上面例子中,编译其会推断myVariable是一个整数类型,因为其初始化值就是个整数。
Note
gashero注记
类型与变量名绑定,属于静态类型语言。有助于静态优化。与Python、JavaScript等有所区别。
如果初始化值没有提供足够的信息(或没有初始化值),可以在变量名后写类型,以冒号分隔。
let imlicitInteger = 70
let imlicitDouble = 70.0
let explicitDouble: Double = 70
Note
练习
创建一个常量,类型为Float,值为4。
值永远不会隐含转换到其他类型。如果你需要转换一个值到不同类型,明确的构造一个所需类型的实例。
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
Note
练习
尝试删除最后一行的String转换,你会得到什么错误?
还有更简单的方法来在字符串中包含值:以小括号来写值,并用反斜线("")放在小括号之前。例如:
let apples = 3
let oranges = 5 //by gashero
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."
Note
练习
使用 () 来包含一个浮点数计算到字符串,并包含某人的名字来问候。
创建一个数组和字典使用方括号 "[]" ,访问其元素则是通过方括号中的索引或键。
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ]
occupations["Jayne"] = "Public Relations"
要创建一个空的数组或字典,使用初始化语法:
let emptyArray = String[]()
let emptyDictionary = Dictionary
如果类型信息无法推断,你可以写空的数组为 "[]" 和空的字典为 "[:]",例如你设置一个知道变量并传入参数到函数:
shoppingList = [] //去购物并买些东西 by gashero
4 控制流
使用 if 和 switch 作为条件控制。使用 for-in 、 for 、 while 、 do-while 作为循环。小括号不是必须的,但主体的大括号是必需的。
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50{
teamScores += 3
}
else {
teamScores += 1
}
}
teamScore
在 if 语句中,条件必须是布尔表达式,这意味着 if score { ... } 是错误的,不能隐含的与0比较。
你可以一起使用 if 和 let 来防止值的丢失。这些值是可选的。可选值可以包含一个值或包含一个 nil 来指定值还不存在。写一个问号 "?" 在类型后表示值是可选的。
var optionalString: String? = "Hello"
optionalString == nil
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}
Note
练习
改变 optionalName 为 nil 。在问候时会发生什么?添加一个 else 子句在 optionalName 为 nil 时设置一个不同的值。
如果可选值为 nil ,条件就是 false 大括号中的代码会被跳过。否则可选值未包装并赋值为一个常量,会是的未包装值的变量到代码块中。
switch 支持多种数据以及多种比较,不限制必须是整数和测试相等。
苹果前不久发布了最新的iOS 8.4.1系统更新,封堵了目前iOS 8.4系统的越狱漏洞,但是有不少用户升级到iOS 8.4.1以后,遇到了耗电严重的现象,在苹果的技术支持论坛上,已经有不少用户反映了iOS 8.4.1的耗电问题。
16777215今天早些时候,苹果正式推出了新的系统更新,而它就是iOS 8.4.1,如果不出意外,这将是iOS 9发布前,最后一个系统更新了。
16777215苹果在今天凌晨向开发者发布了 iOS 8.4.1 第一个测试版,距离 iOS 8.4 正式版发布相隔两周。iOS 8.4.1 可能是 iOS 8 最后一次版本更新,iOS 8.4.1 编译号为 12H304,可以在苹果开发者中心下载。目前,我们还不清楚 iOS 8.4.1 的改变,可能只是修复 Bug,至于大家所关心的iOS 8.4的越狱漏洞是否封堵,目前也是不得而知,期待开发者们公布消息。
1015808就在昨晚11点钟,苹果向用户推送了iOS8.4 的正式版本,但仅过不到一个小时,来自中国的PP越狱助手团队就宣布iOS8.4正式版成功完美越狱!这也创造了iOS系统正式版越狱时间最快的历史记录。今天小编就为大家带来iOS8.4的越狱教程,希望能大家喜欢!
16777215太极越狱工具现在支持ios8.1.3~8.3完美越狱啦,并且支持全系列苹果设备,鉴于目前iOS8.3版系统相对稳定,所以有很多果粉们都跃跃欲试,有不少果粉因为电脑没有装苹果驱动及其他原因会出现8.3越狱卡20%的问题,也就是ios8.3越狱卡在百分之20就不动了。小编找到了很好的解决方法,下面提供给大家。
16777215中国太极团队刚刚发布了iOS 8.1.3-8.3完美越狱工具,全球第一个攻克了iOS 8.3。虽然现在的iOS越狱已经有很简单,但毕竟是刚刚发布,仍然需要注意不少问题。
14237696苹果今天向开发者发布了 iOS 8.4 第一个测试版,距离 iOS 8.3 正式版发布仅仅相隔5天。这次的测试版编译号为 12H407d,开发者可以在 iOS 开发者中心下载,此外,苹果还发布了 Xcode 6.4 测试版。iOS 8.4 包含全新设计的音乐应用,演唱者界面包含全新设计展示歌手的图片,还有个性化的播放列表。全新音乐应用包含迷你播放器,全新设计的“正在播放”,全局搜索方方便用户在应用任意界面发起搜索,以及简化了 iTunes 广播的设计。
16777215越狱无非是为了让自己的 iOS 设备用起来更舒服,那么怎样才能更舒服呢?换个自己喜欢的字体、换个美化了的图标都可以,现在现如今iOS 8.1.2都可以完美越狱了,还带等什么赶紧去换字体去,至于那些不会换字体的亲们,小编现在就来教你怎么换!
16777215苹果今天发布了 iOS 8.3 升级补丁,这是 iOS 8 系统发布后第三个重大升级。iOS 8.3 第一个测试版在今年2月发送给开发者,公共测试版在今年3月发布。iOS 8.3 增加了很多新功能并改进了系统的设计。目前,用户可以通过 OTA 无线升级。此外,苹果还为 Apple TV 准备了7.2 软件升级。
16777215苹果今天发布了 iOS 8.3 第一册测试版,而一周前发布的 iOS 8.2 第五个测试版也正在测试之中。iOS 8.3 的编译号为12F5027d,这次发布的还包括 Xcode 6.3 测试版以及 Swift 1.2。根据测试,iOS 8.3 似乎移除了 iCloud 照片图库的测试标识,并开始提供全新CarPlay 功能,也就是无线连接。
2772992