美文网首页swift 开发
swift开发:语言基础

swift开发:语言基础

作者: djyuning | 来源:发表于2016-04-26 15:45 被阅读20次
    • 必要了解
      • 快速索引查看
      • 错误查询
      • 严谨起步
        • 项目命名规范
        • 文件和声明的命名规范
        • 图片资源的命名规范
      • 注释规范
        • 常规注释
        • 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项目的目录结构和开发流程》

    暂时这么多,慢慢梳理。

    相关文章

      网友评论

        本文标题:swift开发:语言基础

        本文链接:https://www.haomeiwen.com/subject/bcvqrttx.html