美文网首页
Swift与Objective-C的基础区别

Swift与Objective-C的基础区别

作者: 小驴拉磨 | 来源:发表于2018-05-22 15:25 被阅读6次

    一、属性的声明

    OC的常量和变量主要跟属性所属类是否是可变的

    @property (nonatomic, retain) NSArray *modelObject;
    

    Swift常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量。

        //声明一个名字为number常量
        let number = 333
        //声明一个名字为mutableNumber变量
        var mutableNumber = 444
    

    二、Swift是一门安全的语言

    • Swift是一个类型安全(type safe)的语言,让你清楚地知道代码要处理的值的类型,如果你的代码需要一个String,你绝对不可能不小心传进去一个Int,因为它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误。
    • Swift还会帮我们做类型推断,每次声明常量和变量的时候都不必显式指定类型,如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型,编译器会根据你赋的值自动推断出表达式的类型。
    let number = 42
    // number 会被推测为 Int 类型
    let number = 3.14159
    // number 会被推测为 Double 类型
    let number = 3 + 0.14159
    // number 会被推测为 Double 类型
    

    三、Swift中的布尔值

    OC中的布尔值是YES和NO,而且是非零既为真。
    Swift中布尔值是true和false,不是非零即为真。
    在OC中这样写是不会报错的

    if (1) {
                //在OC中没有问题
            }
    

    在Swift中会报错

    if 1 {
                //Int' is not convertible to 'Bool'
            }
    

    四、元组

    元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。
    你可以把任意顺序的类型组合成一个元组,这个元组可以包含所有类型。只要你想,你可以创建一个类型为 (Int, Int, Int) 或者 (String, Bool) 或者其他任何你想要的组合的元组。

    五、可选类型

    使用可选类型(optionals)来处理值可能缺失的情况。C 和 Objective-C 中并没有可选类型这个概念。可选类型表示:

    • 有值,等于 x
      或者
    • 没有值,为nil
      例如:Swift 的 Int 类型有一种构造器,作用是将一个 String 值转换成一个 Int 值。然而,并不是所有的字符串都可以转换成一个整数。字符串 "123" 可以被转换成数字 123 ,但是字符串 "hello, world" 不行。
    let possibleNumber = "123"
    let convertedNumber = Int(possibleNumber)
    // convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
    //因为该构造器可能会失败,所以它返回一个可选类型(optional)Int,而不是一个 Int。一个可选的 Int 被写作  Int? 而不是 Int。问号暗示包含的值是可选类型,也就是说可能包含 Int 值也可能不包含值。(不能包含其他任何值比如 Bool 值或者 String 值。只能是 Int 或者什么都没有。)
    

    相关文章

      网友评论

          本文标题:Swift与Objective-C的基础区别

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