NSObject和Struct之间的区别

时间:2014-06-24 07:50:47

标签: struct swift ios8

我想知道NSObjectstruct之间的区别。以下示例将解释这两种情况

struct

struct UserDetails{
    var userName:String
    var userID:String
    var userAge:String
    func userDescription()->String{
        return "name " + userName + "age " + userAge
    }
}

NSObject班级

class UserDetails: NSObject {
    var userName:String?
    var userID:String?
    var userAge:String?
    func userDescription()->String{
        return "name " + userName! + "age " + userAge!
    }
}

你们有没有人可以告诉我在哪里必须使用NSObject课程,我必须使用struct ..?

2 个答案:

答案 0 :(得分:5)

1)结构通过值传递,Class实例通过引用传递 2)类可以是子类,Structs不能。

Class是否是NSObject的子类(大多数)是无关紧要的。你也可以说:

class UserDetails {
    var userName:String?
    var userID:String?
    var userAge:String?
    func userDescription()->String{
        return "name " + userName! + "age " + userAge!
    }
}

答案 1 :(得分:3)

Swift中的类和结构比许多语言中的更接近。两者都可以具有属性,方法,初始化器,下标,可以符合协议,并且可以扩展。但是,只有类可以利用继承并使用deinitializers,并且因为类是通过引用使用的,所以您可以对特定实例具有多个引用。

结构在整个Swift中使用 - 数组,字典,一切都是可选的,还有更多是基于struct类型构建的,因此性能应该非常高。只要您不需要继承或类提供的多个引用,就可以使用struct