Swift与Objective-C的基础区别

2018-05-22  本文已影响6人  小驴拉磨

一、属性的声明

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

@property (nonatomic, retain) NSArray *modelObject;

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

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

二、Swift是一门安全的语言

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 中并没有可选类型这个概念。可选类型表示:

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
//因为该构造器可能会失败,所以它返回一个可选类型(optional)Int,而不是一个 Int。一个可选的 Int 被写作  Int? 而不是 Int。问号暗示包含的值是可选类型,也就是说可能包含 Int 值也可能不包含值。(不能包含其他任何值比如 Bool 值或者 String 值。只能是 Int 或者什么都没有。)
上一篇 下一篇

猜你喜欢

热点阅读