作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解扩展。
案例一。
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"
}
}
有什么不同?两者都运行良好,我只知道哪个更好,为什么?
最佳答案
扩展允许您向类添加功能(以扩展它)而无需子类化。
假设您想添加一个 quickAlertFunction
,这样您就可以轻松地显示带有标题、消息和确定按钮的基本警报:
func displayQuickAlert(title: String: message: String) {
// create a alert VC with title and mesage
// add the ok button/action
// present the alertVC
}
如果您通过子类化完成此操作,则需要更新所有 ViewController 以从您的子类扩展,但如果您将此作为 UIViewController 的扩展来完成,则无需更新任何内容。
如果您想向类添加通用功能,通常最好使用扩展,如果您想添加特定的更改,可能像扩展文本字段并添加一些自动完成或其他东西......您不希望这些更改在所有文本字段上都是全局的,只是您的子类的实例。
另外,最后一件事要注意..您不能在扩展中添加属性,但可以在子类中添加属性
关于swift - 外延与内在的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40693591/
我是一名优秀的程序员,十分优秀!