扩展与固有之间有什么不同

时间:2016-11-19 13:43:30

标签: swift

我想知道扩展。

案例1。

import Foundation
import Parse

class Room: PFObject, PFSubclassing {
    @NSManaged var name: String?

    static func parseClassName() -> String {
        return "Room"
    }
}

案例2。

import Foundation
import Parse

class Room: PFObject {
    @NSManaged var name: String?


}

extension Room: PFSubclassing {

  class func parseClassName() -> String {
    return "Room"
  }


}

有什么不同?两者都很完美我只知道哪一个更好,为什么?

1 个答案:

答案 0 :(得分:3)

扩展允许您向类添加功能(以扩展它),而无需子类化。

所以想象一下你想添加一个quickAlertFunction,这样你就可以轻松地显示一个带有标题,消息和确定按钮的基本警报:

func displayQuickAlert(title: String: message: String) {
    // create a alert VC with title and mesage
    // add the ok button/action
    // present the alertVC
}

如果通过子类化完成此操作,则需要更新所有ViewControllers以从子类扩展,但如果您将此作为UIViewController的扩展,则不需要更新任何内容。

如果要添加特定更改,可能需要添加特定更改,例如扩展文本字段并添加一些自动完成功能等等,通常可以更好地使用扩展程序。 ; t希望这些更改在所有Textfields上都是全局的,只是你的子类的实例。

另外,最后要注意的一点是..你不能在扩展中添加属性,但你可以在子类中