`

《写给大忙人看的Swift》 试读

阅读更多

第1章 Swift介绍

1.1 swift是什么

    swift是苹果公司在2014向开发者发布的一门语言。可以用来开发IOS和OS X平台上开发应用程序。它兼容苹果之前的开发语言Objective-c,并计划最终取代Objective-C。

 

1.2 基本语法

1.2.1 变量&常量

    var声明变量,let声明常量。

    例子:

var count:Int //声明一个Int型

    swift是一种强类型语言,所以编译阶段就严格控制类型,两种类型不能混合操作。如,int和float不能混合运算。

 

    类型推断,上面的例子里通过冒号后的类型Int显式地声明了变量,但也可以不用显式通过变量初始化时赋值的类型来确定该变量的类型,如:

var count = 0   //跟上面例子一样的效果

 

 1.2.2 字符串插值

    这个功能非常方便地format了string,再也不用写好多“”和+了。它使用\()就搞定了,看例子:

var name = "Jay"
var age = 13
var content = "name:\(name), age:\(age) "
//结果: name:Jay, age:13

1.2.3 if语句

if aa > 0 {
   //语句
}
else if aa < 0 {
  //语句
}
else {
  //语句
}

 

1.2.4 switch

    这里switch跟C、Java不同的地方是它不用写break,自己会在下个case前跳出去,这个设定有坏也有好。据说第2章里有switch的高级用法

switch num {
case 0:
   //....
case 1:
   //....
default:
   //....
}

 

1.2.5 循环for, for-in, while, do-while

for var i = 0; i < 10; ++i {
   //...
}

 

 

for i in 0 ..< 10 {
   //0-9
}

 

for i in 0 ... 10 {
  // 0 -10
}

 

//items is array
for item in items {
  //item  
}

 

while i  < 100 {
  //....
}

 

do {
  //...
}while i < 100

     其中break和countine跟传统的一样用法。

 

1.3 基本数据类型

1.3.1 整形

    Int 在32位系统上是32位,在64为系统上是64位,这个设定也好蛋疼。

 

    还用更加明确的位数的类型Int8、Int16、Int32和Int64,无符号版本:UInt8、Uint16、UInt32 和 UInt64

 

1.3.2 Double和float

    都是小数类型,double是64位,float是32位。

 

1.3.3 Bool类型

    true和false

 

1.3.4 字符串

    count() 函数来获取字符串的长度

var iString = "Hello World"

 

1.3.5 数组

    声明一个数组:

    长形式: Array<ValueType>

    短形式: [ValueType]

var items:[String] = [] //显式
var items = [String] //隐式

let bosses = ["Jeff", "Tom", "Rob"]

 

1.3.6 字典

    长形式: Dictionary<KeyType, ValueType>

    短形式: [KeyType: ValueType]

  

var pp: [String:Int] = [:] //显式
var pp = ["aa":11] //隐式

 

1.4 感受

    感觉基本类型及控制结构跟js及java等语言非常相似,所以学习起来比较容易,不过有些地方还是挺疑惑的譬如Int居然操作系统位数不一样他还不一样,所以对于数字比较大的我们只能使用Int64了,免的在32位上溢出。

 

第7章 使用Objective-C

    对于这章作为一个没有学过Ob-c的我来说有很多困扰,譬如Ob-C的代码完全一头雾水,objective-c还是很神奇的语法。这章节主要讲如何和objective-c混用,互相调用。

 

7.1 调用C和Objective-C的APIs

    使用c或者ob-c之前先将框架通过inport导入到swift中: 

 

import Cocoa

     

 

    ob-c中类会自动转换成swift语法,我们不再需要alloc然后init了,而是使用Swift中的构造语法。

 

7.1.1 可空属性和返回值

    有两种返回情况需要注意:nil和AnyObject。因为Ob-C中没有可空类型,所以遇到nil返回时会被转换成可空对象返回,在swift中调用要小心,如果没有处理nil的情况,那么要么编译出差,要么运行崩溃。

 

7.1.2 AnyObject类型

    在返回对象不确定时会使用AnyObject这个宽泛的类型,那么程序需要对它进行类型判断。

 

7.1.3 继承、扩展和协议

//继承
class MySwiftController: UIViewController {

}
//实现协议
class SwiftViewControllerL UIViewController, UITableViewSource, UiTableViewDelegate {

}

    继承Obj-C类的时候我们需要遵守Swift的构造方法约定和规则,在需要dealloc的地方使用析构方法deinit替代。  

 

7.1.4 自动类型转换

    在调用Obj-C的时候会存在几种自动类型转换,称为“桥接类型”,如NSString会自动转换成String, NSNumber桥接到Int, UInt, Float, Double和bool。

    Array和字典在转换的时候会转换成[AnyObject]所以需要做类型检查。

 

7.1.5 选择器和枚举

7.1.6 与C代码交互

    为了和C交互Swift提供了可直接映射为C原始类型的“类C风格”,这些类型都是以大写C开头如bool映射CBool, const void * 映射为CConstVoidPointer等。

 

7.2 在项目中同时Swift和Objective-C

    在swift文件中使用ob-c的类,将用到的obj-c头文件用import语句引入,这样在swift中可以使用这些类了。

 

//Bridging-header.h
#import "MyAwesomeObjCClass.h"

var object = myAwesomeObjCClass() 
object.awesomeObjCFunction()

 

    在Obj-C类中调用Swift代码,需要将Swift类导入Obj-C文件中,使用import语句即可。

 

#import "ProducModuleName-Swift.h"

 

    Swift代码兼容Obj-C,需要继承NSObject或使用@objc修饰。

 

@objc class MySwiftClass {
   var name:String = ""
}

 

   读后感:

    苹果推出swift为了使开发变得简单话,因为没有使用过Objective-C开发过所以我也没有资格去评价Objective-C怎么样,但是Swift的语法要比较接近脚本语法比较容易理解和学习,但是因为要兼容Objective-C所以搞得有点混乱,互相杂糅。

    可能是因为一些时间原因swift还不是很健全,并且历史原因obj-c的资源和框架已经很多很丰富,这时候如果完全废除obj-c的话必定引起一些开发人员的反弹,所以也是很纠结的事情,希望不久的将来能够完全替代Objective-C,还是挺看好Swift的。

 

    

分享到:
评论

相关推荐

    写给大忙人看的Swift

    Swift精华快速学习,OS X和iOS开发大师教你在已有工程中平滑地集成Swift、绕开Swift与Objective-C共存的那些坑

    写给大忙人看的C++

    《写给大忙人看的C++》简明地描述了C++核心语言和标准库中几乎所有的函数、对象和运算符,一目了然地显示了语法、结构和重要函数的信息,内容组织形式便于快速查找信息。《写给大忙人看的C++》精选了实用的例子来...

    写给大忙人看的Java SE 8

    《写给大忙人看的Java SE 8》向Java开发人员言简意赅地介绍了Java 8 的许多新特性(以及Java 7 中许多未被关注的特性),《写给大忙人看的Java SE 8》延续了《快学Scala》“不废话”的风格。, 《写给大忙人看的Java ...

    写给大忙人看的Java系列

    写给大忙人看的Java SE 8和写给大忙人看的JAVA核心技术

    写给大忙人看的java核心技术-随书源码

    写给大忙人看的java核心技术-随书源码 写给大忙人看的java核心技术-随书源码写给大忙人看的java核心技术-随书源码

    写给大忙人看的JAVA核心技术【高清版带书签】

    写给大忙人看的JAVA核心技术【高清版带书签】 写给大忙人看的JAVA核心技术【高清版带书签】 写给大忙人看的JAVA核心技术【高清版带书签】

    写给大忙人看的C++,完整扫描版

    等待吧,兄弟】《写给大忙人看的C++》全面介绍了C++语言知识,既提供了学习C++语言最新功能的捷径,也为快速找到特定问题的答案提供了便利。《写给大忙人看的C++》简明地描述了C++核心语言和标准库中几乎所有的函数...

    写给大忙人看的JavaSE8

    资源名称:写给大忙人看的Java SE 8内容简介:《写给大忙人看的Java SE 8》向Java开发人员言简意赅地介绍了Java 8 的许多新特性(以及Java 7 中许多未被关注的特性),《写给大忙人看的Java SE 8》延续了《快学Scala...

    写给大忙人看的JavaSE 8

    写给大忙人看的JavaSE 8 高清带书签

    写给大忙人看的java 8 中文 PDF 高清版

    高清的PDF,第一手提供的新鲜材料!详细介绍java se8 的相关资料!

    写给大忙人看的java核心技术

    《写给大忙人看的Java核心技术》为经典著作Core Java作者Cay S. Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java...

    写给大忙人看的Java核心技术 高清(带目录)PDF

    《写给大忙人看的Java核心技术》为经典著作Core Java作者Cay S. Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java...

    写给大忙人看的java核心技

    《写给大忙人看的java核心技术》以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对java 8 新特性进行细致讲解。。。

    写给大忙人看的java+se+8.zip

    该资源为写给大忙人看的java8特性 pdf版本,内容从网络获取,仅供学习交流,如条件允许请支持正版!

Global site tag (gtag.js) - Google Analytics