美文网首页iOS学习
Swift 2.0-Study(三)

Swift 2.0-Study(三)

作者: Restar | 来源:发表于2016-06-01 19:16 被阅读17次
  1. 结构体和类之间最重要的区别之一是,当它们在代码中被传递时,结构体总是被 copy 的, 属于值传递,而类是通过引用传递的。结构体用于定义轻量级数据类型,不需要有像继承和类构造那样的能力,结构体可以处理不同类型的数据;
    枚举类型使用位运算符赋初始值时,表示用于可复选的枚举属性,调用时使用 | 运算符

  2. protocol ExampleProtocol {
    var simpleDescription: String { get }
    func adjust()
    }
    { get }作为协议的属性表明它是只读的,意味着该属性的值可以查看,但不能修改

  3. Storyboard add constraints
    shift + All UI element —> click the Stack Button —> Attributes inspector set Spacing field —> Pin add constraint —> items of New Constraints
    Aspect Ratio 设置View元素比例,一旦设置,便保持不变

  4. AnyObject:一种被描述为可以属于任何类对象的类型

  5. as as! as?
    as使用场合
    (1)从派生类转换为基类,向上转型(upcasts)
    class Animal {}
    class Cat: Animal {}
    let cat = Cat()
    let animal = cat as Animal
    (2)消除二义性,数值类型转换

let num1 = 42 as CGFloat
let num2 = 42 as Int
let num3 = 42.5 as Int
let num4 = (42 / 2) as Double
(3)switch 语句中进行模式匹配
如果不知道一个对象是什么类型,你可以通过switch语法检测它的类型,并且尝试在不同的情况下使用对应的类型进行相应的处理。

switch animal {
case let cat as Cat:
print("如果是Cat类型对象,则做相应处理")
case let dog as Dog:
print("如果是Dog类型对象,则做相应处理")
default: break
}
as!使用场合
向下转型(downcast)时使用。由于是强制类型转换,如果转换失败会报 runtime 运行错误。

class Animal {}
class Cat: Animal {}
let animal :Animal = Cat()
let cat = animal as! Cat
as?使用场合
as? 和 as! 操作符的转换规则完全一样。但 as? 如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值(optional),需要我们拆包使用。
由于 as? 在转换失败的时候也不会出现错误,所以对于如果能确保100%会成功的转换则可使用 as!,否则使用 as?

let animal:Animal = Cat()

if let cat = animal as? Cat{
print("cat is not nil")
} else {
print("cat is nil")
}

  1. failable Initializers (可失败构造器)
    初始化失败后可能返回 nil
    1)可以直接用条件判断语句使用可失败构造器来实例化对象
    2)init初始化方法可以通过在init关键字后面加上?或!将其变为可失败初始化方法,这样就表示某对象的初始化方法会产生两种结果
    3)可失败构造器/初始化方法解决了以前在Swift中只能通过工厂方法捕获构造或初始化失败情况的问题。比如,一个枚举,通过fromRaw工厂方法通过一 个原始值来寻找它所对应的枚举成员,返回类型为可选枚举类型。即如果该原始值对应的枚举成员存在,那么返回该枚举成员,如果不存在则返回nil。现 在,Swift编译器结合可失败构造器,通过可失败的初始化方法用switch语句判断原始值对应的枚举成员,如果没有对应的则返回nil:
    enum Color : Int {
    case Red = 0, Green = 1, Blue = 2

     // implicitly synthesized 
     var rawValue: Int { /* returns raw value for current case */ } 
    
     // implicitly synthesized 
     init?(rawValue: Int) { 
         switch rawValue {  
             case 0: self = .Red 
             case 1: self = .Green 
             case 2: self = .Blue 
             default: return nil 
         } 
     } 
    } 
    
  2. Storyboard 布局 (给 UItableViewCell 添加界面元素时做参考 )
    Editor —> Canvas —> Show Bounds Rectangles 使用蓝色矩形显示 UI 界面元素的 bounds,使得界面元素的局部排列更加容易
    如果向 Cell 中添加的是 UIView,当添加的 UIView 不需要交互时,需要将 Attribute inspector 中的 interaction 项取消交互

  3. 导航栏的背景会延伸到状态栏的顶部

  4. 判断数组:if array.isEmpty { return nil }

相关文章

  • Swift 2.0-Study(三)

    结构体和类之间最重要的区别之一是,当它们在代码中被传递时,结构体总是被 copy 的, 属于值传递,而类是通过引用...

  • Swift 2.0-Study(-)

    命令行工具:swiftc - - help 获取到Swift源码编译到各个阶段的结果 在 * / % 前加& 忽略...

  • Swift 2.0-Study(二)

    函数: 没有定义返回类型的函数会返回特殊的值,叫 Void。它其实是一个空的元组(tuple), 没有任何元素,可...

  • Swift备忘

    Swift初体验 Swift Tips Swift三种不同的【异常处理方式】 Swift 3.0 private变...

  • iOS第三方库的使用方法以及常用的第三方库

    知识点:swift使用OC第三方库,swift使用swift第三方库,OC使用swift第三方库以下为手动添加,最...

  • swift学习之路

    swift3.0.1官方文档下载链接 swift(一)简单值 swift(二)流程控制 swift(三)函数和闭包...

  • 10.27类,对象

    三个swift文件: 主文件:main.swift: importFoundation //如果在swift中引用...

  • Swift -标签页控制器(UITabBarController

    首先创建三个Swift(HomeViewController.swift,CenterViewController...

  • Swift-MVVM 简单演练(二)

    Swift-MVVM 简单演练(一) Swift-MVVM 简单演练(三) Swift-MVVM 简单演练(四) ...

  • Swift-MVVM 简单演练(四)

    Swift-MVVM 简单演练(一) Swift-MVVM 简单演练(二) Swift-MVVM 简单演练(三) ...

网友评论

    本文标题:Swift 2.0-Study(三)

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