美文网首页
Stanford CS193p iOS开发课程笔记(三)

Stanford CS193p iOS开发课程笔记(三)

作者: Dominic1992 | 来源:发表于2015-12-04 21:36 被阅读189次

    2015年12月4日,完成了第四课"More Swift and Foundation Frameworks"的学习

    这一课无代码演示,主要讲解了一些Swift的基本语法知识,好在之前已经打下了基础,没有在这一课的学习中较为顺利,但关于初始化器和懒加载以及will set,did set.方面的知识还要继续进行补充

    本课的主要知识点如下

    2.png
    • 可选类型其实就是个枚举
    enum Optional<T> {   ///T为关联值得类型
            case None
            case Some(T)
    }
    
    let x: String? = nil  相当于  let x = Optional<String>.None
    
    let x: String? = "hello"  相当于  let x = Optional<String>.Some("hello")
    
    • 解包"!"就相当于一个Switch
    switch x {
           case some(let value):y = value
           case None: //raise an exception
    }//在None的情况下就会抛出异常
    
    • 遍历字典
    for (ket , value) in xxx {
          print("\(key) = \(value)")
    }
    
    • NSObject是OC中所有类的基类,swift中并没有一个这样的基类,但swift类也可以集成字NSObject

    • NSNumber是一个装数字的类,swift不会用到很多,因为swift是强类型语言

    • NSDate 储存日期的类

    • NSDate 比特包,里面是无类型的数据

    • swift中的数据结构
      class,struct,enum是swift数据结构中的三个基础块
      相同点:1.语法声明上很像 2.都有属性和函数 3.都可以有初始化构造器
      不同点:1.class是三种中仅有继承性质的 2.内省和转换(Introspection and casting)也是class独有的 3.class是引用类型. struct和enum是值类型

    • AnyObject主要用于兼容现有OC API和iOS代码,其是指向一个未知类的指针

    我们会在哪里用到它?

    var destinationViewController : AnyObject
    var toolbarItems: [AnyObject]
    
    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)
    func addConstraints(constranits: [AnyObject])
    func appendDigit(sender: AnyObject)
    
    class func buttonWithType(buttonType: UIButton) -> AnyObject
    

    如何进行转换?

    利用as强制转换

    var destinationViewController : AnyObject
    let calcVC = destinationViewController as CalculatorViewController
    

    利用as?在转换前进行判断

    if let calcVC = destinationViewController as? CalculatorViewController {...} 
    

    [AnyObject]数组的转换

    var toolbarItems: [AnyObject] 
    for item in toolbarItems {
          if let toolbarItems = item as? UIBarButtonItem {
          }
    }
    ...or...
    for toolbarItem in toolbarItems as [UIBarButtonItem] {}//直接将整个[AnyObject]数组转换成了[UIBarButtonItem]
    

    相关文章

      网友评论

          本文标题:Stanford CS193p iOS开发课程笔记(三)

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