记OC迁移至swift中的笔记20Tips

2016-05-25  本文已影响162人  Carrism

写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节。

1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是建议省略
2 selector是调用方法写法是:Selector("sayHello")或者是#selector(sayHello)
3 swift中不同类型的值之间不能直接做运算,所以不同类型值做运算的时候需要对值进行类型转化,都转化至同一类型之后方可做运算
4 可选类型如果一个变量可能有值也可能为空,那么这个变量就是属于可选类型。可选类型在变量的数据类型后边加上?,比如var str:String?
可选类型的值不能直接参与运算,需要强行解包之后才能使用,使用 `!`
标识强行解包某个可选类型的值。使用`!`一定要确定该值不为`nil`才可
以对这个值进行强制解包,如果对`nil`进行强制解包的话程序会崩溃
5 控制流
if let n = name{
    //当name有值的时候会定一个常量n去记录此时这个可选类型的值
    并且能够进入到判断语句代码块中
}
如果变量name没有值的话继续往下面执行
1. where 就是给前面定义出来的常量再添加一个判断 (where 后面的执行语句的执行结果必须为 true/false)
2. 如果需要在 if let 中更改定义的常量(其实需要将其改成变量),只需要将 let 改成 var就可以了

guardif-let少了一层代码嵌套

guard var n = m else{
        当变量m的值为空的时候执行这里的代码块,执行结束之后return出去
        ........
        return
}
不为空的话往下执行
printf(n)
6 switch
7 必选属性与可选属性
8 swift细化了属性的类型
9 set方法与get方法
10 重写init(frame:CGRect)方法
11 swift中单例写法
    static let singleInstance:类名 = {
        let instance = 类名()
        return instance
    }()或者
    static let instance = 类名()
    let singleInstance:类名 = {
          return instance
    }

12 swift中遍历数组时候必须明确数组里面元素的类型
    for item in array as! [String:Anyobject]
    {
    }
13 根据字符串动态创建类实例:

swift中类进行实例初始化的时候会根据工程名称在类名前加上命名空间再初始化,所以根据一个类名字符串创建实例需要先获取类名空间

14 异常捕获try throw
15 CGRectOffset的使用
```
    //第一个参数:frame大小
    //第二个参数:x方向偏移的大小
    //第三个参数:y方法偏移的大小
    CGRectOffset(frame,x,y)
```
16 按钮监听不能使用private修饰
17 闭包回调中应该接收一个optional类型的,不使用是强制解包,当闭包回调中如果有一个参数为nil的时候使用!强制解包就会造成程序崩溃
18 swift中的字典转模型
    init(dict){
        super.init()
        setValuesForKeyWithDictionary(dict)
    }
19 swift中可以通过点语法直接修改结构体里面的变量
    btn.frame.origin.x = 0
20 swift中遵守协议的用法
    extension 本类名:协议名
    {
    }
上一篇 下一篇

猜你喜欢

热点阅读