swift开发:语言基础

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

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

必要了解

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

快速索引查看

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

按下`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注释的上下均需要留出一个空行,以区分代码的上下文。

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)
  }

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

带代码提示效果的注释
按住`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项目的目录结构和开发流程》

暂时这么多,慢慢梳理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,072评论 4 62
  • 海,无边无际 却是沙鸥的向往; 天,广阔无垠, 却是云的向往; 那我的向往又是什么呢? 曾问过自己无数个这样的问题...
    向上居士阅读 206评论 1 4
  • 你在我青春的记忆里 幸福徘徊 欢笑,难忘,哀愁 你在我幸福的时光里 笑逐颜开 相拥,相伴,相爱 你让我幸福满满,矜...
    迎春花阿班阅读 187评论 3 2
  • 是夜,我夹着根烟走在人潮汹涌的酒吧街,老高和另外两个女孩子在商量着去哪个酒吧,我低头看着自己一身的雪白,觉着有些违...
    阿拉丁的小人阅读 181评论 0 0