美文网首页
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