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 初始化器不返回值。
网友评论