美文网首页
OC 与 Swift 的不同

OC 与 Swift 的不同

作者: 帅气的阿斌 | 来源:发表于2020-04-15 12:28 被阅读0次

    1、=在swift中不再有返回值

        var a = false
        //❌ 直接编译报错
        if a = true {
            print("a is true")
        }
    

    2、结构体CGRect....在swift中可直接设置属性

            let btn = UIButton(type: .custom)
            btn.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
            btn.frame.size.height = 200//在OC会报错
    

    3、比较相等性

    ==
    OC == 如果是值类型则比较值相等 如果是对象则是比较引用变量指向内存的指针地址
    swift中 ===才是比较引用内存的指针地址且
    swift中 == 比较两个对象会直接报错

    let a = (obj == objj)
    //Binary operator '==' cannot be applied to two 'BinObject' operands
    

    swift中字符串比较可以直接用 ==
    OC必须用 isEqualToString....

    swift中
    结构体是值类型,赋值操作是进行的值拷贝
    对象是引用类型,赋值时指针拷贝

    字符串,数组和字典的赋值与拷贝行为
    Swift 的 String , Array 和 Dictionary类型是作为结构体来实现的,这意味着字符串,数组和字典在它们被赋值到一个新的常量或者变量,亦或者它们本身被传递到一个函数或方法中的时候,其实是传递了拷贝。

    这种行为不同于基础库中的 NSString, NSArray和 NSDictionary,它们是作为类来实现的,而不是结构体。 NSString , NSArray 和 NSDictionary实例总是作为一个已存在实例的引用而不是拷贝来赋值和传递。

    4、
    不同于 Objective-C 的初始化器,Swift 初始化器不返回值。

    相关文章

      网友评论

          本文标题:OC 与 Swift 的不同

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