swift开发:语言基础

  • 必要了解
    • 快速索引查看
    • 错误查询
    • 严谨起步
      • 项目命名规范
      • 文件和声明的命名规范
      • 图片资源的命名规范
    • 注释规范
      • 常规注释
      • MARK
      • 带代码提示效果的注释
  • 开始学习
    • 数据类型
      • 字符串
      • 数字
      • 数组
      • 字典
      • 对象
      • 布尔值
    • 变量
    • 常量
    • 变量引用
    • 函数
    • block
      • 类的基本格式
      • 类的继承
      • 一个功能完善的类:代理方法、接口方法、枚举类型
    • 结构体
    • 循环语句
    • 流程控制
  • 工程结构设计

个人整理的swift语言的简单基础语法,便于快速进入开发。遵循个人学习理念【字、词、句、段、章、册、集】,从变量常量(字)入手,到运算逻辑(词、句),到函数(段),到类(章),知道这些内容,swift语言的基础学习基本可以告一段落了,接下来就可以开发简单的小APP了。

必要了解

到目前为止,swift已经经历了几个版本,网上有不少它的教程文档和博客案例,但某些已经是旧版本的内容了。

快速索引查看

在Xcode中,按下option键,鼠标移动到某个方法或对象上,鼠标指针会变成问号的效果,点击即可查看该方法或对象的解释。

swift开发:语言基础_第1张图片
按下`option`键查看相关的描述

同样的,按下 command键,鼠标移动到某个方法或对象上,当前方法或对象会变为蓝色带下划线的可点击对象,点击即可进入其相关的代码页面。
按下`command`键 当前方法或对象会变为蓝色带下划线的可点击对象

点击即可进入其相关的代码页面

错误查询

在学习时遇到错误提示,应首先注意关键字(如;printIn已弃用,使用print),然后检查类型声明,最后查询网上相关的解答。

  • 可以不写语句末尾的结束符,这个和js等语言不同,需要适应;
  • 时刻注意类型;
  • 使用 NSLogprint 在控制台输出,前者只能输出字符串,后者可以输出任何类型;
  • 函数调用时,第二个参数开始需要书写参数名,如:muFunc(5, end: 10, doName: "username")
  • 类实例化的时候必须写参数名,如:let myClass = MyClass(name: "dj", age: 29)
  • 什么时候使用?,什么时候使用!
  • 什么时候用let,什么时候用var
  • 优雅的点语法

这是官方推荐的中文文档和代码示例:
《The Swift Programming Language》in Chinese

严谨起步

另外,学习一门语言前,还需要了解一下它的推荐语法,即开发规范,这有助于我们从一开始就养成良好的开发习惯,对于开发规范,可以通过多篇不同的文章来总结出其约定的规律,这样对于那些有歧义的语法予以适当注意,对于约定俗成的语法通过不断的练习来强化记忆,直到成为习惯。

开发规范涉通常及到以下几点:

  • 变量、函数的命名规范;
  • 类和类文件的命名规范;
  • 工程目录的设计规范;
  • 注释规范;
  • 美观、严谨的语法排版;

学习一门语言的时候,一定记得不要玩异类语法,要知其然知其所以然,尽量按照原生、完整的语法来实现逻辑。这样做可以减少大部分错误的产生。
开发规范参考:
《17条 Swift 最佳实践规范》

注释规范

最后,还需要了解下swift的注释方法和规范,相关内容可网上搜索资料。注意的是,按照以往的代码习惯,不要在正常代码的后面加注释,swift是不写末尾的休止符号的,另外,IOS中的很多方法和属性都是比较长的字符,单行书写注释会导致文本换行,进而影响代码可读性,注释的优势也就无意义了。

常规注释
// 使用双斜线 加 一个空格 的注释
let stringMax: Int = 20  // 行尾注释不利于阅读
//双斜线后无空格的话注释不够美观,阅读略显拥堵

多行注释的用法:

/*
 使用单个斜线和单个星号作为起始行,且第一行不写内容;
 余下的行每行左侧缩进对齐;
 * 也可以使用星号加单个空格对齐
 * 注释的结尾使用单个星号和单个斜线结束,且注释结束行不在书写内容
 */

上面的多行注释是个人觉得比较友好的注释方法。在xcode中,注释的快捷键是CMD + /符合,它会保留行前的缩进。执行一次可在添加注释和取消注释之间切换。生成的注释类似:

// 注释内容
//        let fontSize = 14 <- 保留了缩进
// 第一行
// 第二行
// 第三行
MARK

xcode中的mark注释是为了方便查找和导航代码用的,swift中的写法变的更为简单了:

// MARK: 测试标示

// 自定义注释
func ····

// MARK: 标签
// TODO: 待处理
// FIXME: 修复

需要注意的是,它需使用大写字母加冒号,通常,mark注释的上下均需要留出一个空行,以区分代码的上下文。

swift开发:语言基础_第2张图片
Xcode中的MARK和TODO注释导航
带代码提示效果的注释

常规的注释是不具有代码提示效果的,但使用三根斜线的注释则会显示出代码提示,简单的例子如:

  ///  RGBA色彩
  ///  - parameter r: Red红色
  ///  - parameter g: Green绿色
  ///  - parameter b: Blue蓝色
  ///  - parameter a: Alpha透明度
  ///  - returns: RGBA色彩
  func RGBA(r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) -> UIColor {
    return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: a)
  }

在使用的时候会出现提示:

swift开发:语言基础_第3张图片
带代码提示效果的注释
swift开发:语言基础_第4张图片
按住`option`键点击带注释的对象或方法

开始学习

变量

语法:

var 变量名: 类型 = 变量值

示例:

var myOrigin: Point
var myVar: String = "Hello world!"
var myInt: Int = 49

常量

语法:

let 常量名: 类型 = 常量值

示例:

let myVar: String = "Hello world!"
let myInt: Int = 49

变量引用

语法:

\\(变量名)

示例:

let taskInt: Int: 5
let myString: String = "开始学习swift,这是第\\(taskInt)个任务"
print( myString )
// 输出 开始学习swift,这是第5个任务

函数

语法:

func 函数名(参数:类型[,参数:类型]) -> 返回类型 {
  // 函数体
}

示例:

// 声明函数,无返回值 = func 函数名() -> Void {}
var name: String
func myFunc() {
  self.name = "张三"
}

// 声明函数,无参数函数
func myFunc() -> String {
  return "Hello world"
}

// 调用
let myFuncOutput: String = myFunc()

// 输出:Hello world
print( myFuncOutput )

// --------------------------

// 声明函数,一个参数
func myFunc( username: String ) -> String {
  return "Your name is \\(username)."
}

// 调用
let myFuncOutput: String = myFunc( "张三" )

// 输出:Your name is 张三.
print( myFuncOutput )

// --------------------------

// 声明函数,多个参数
func myFunc( username: String, age: Int ) -> String {
  return "Your name is \\(username), and age is \\(age)."
}

// 调用
let myFuncOutput: String = myFunc( "张三", age: 29 )

// 输出:Your name is 张三, and age is 29.
print( myFuncOutput )

swift中有结构体的概念,具体参考:
https://github.com/numbbbbb/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/09_Classes_and_Structures.md。

类的基本格式

class MyClass {
  // 变量
  let username: String
  var age: Int

  // 私有变量,外部只读
  private var outputStr: String

  // 初始化
  // 实例化时都需要指定变量名:MyClass( name: "张三", age: 29 )
  init (name: String, age: Int) {
    self.username = name
    self.age = age
  }

  // 方法定义
  func funcFirst() {
    print(  )
  }

  // 带参数的方法
  func funcSecond( username: String ) {
    self.username = username
  }
}

类的继承

类的基本特征是【继承性】【抽象性】【多态性】,那继承性是必须要学习的,它直接决定了类的功能和灵活程度。
继承自某个类,可使用冒号调用基类的类名,如:

class Photoshop: Adobe {
  // 逻辑实现
}

该部分需要重点学习重写语法,了解类的一些关键字声明。
参考:Swift学习第十七:重载(override)

工程结构设计

哪怕我们的学习只是为了能自己开发一个小APP,也需要认真学习和实践一个优秀的项目开发方案。好的开发流程和工作目录可以大大提高我们的工作效率。
《iOS项目的目录结构和开发流程》

暂时这么多,慢慢梳理。

你可能感兴趣的:(swift开发:语言基础)