2016-11-19 67 views
0

我想了解扩展。扩展和固有之间有什么不同

案例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" 
    } 


} 

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

回答

3

通过扩展,您可以向类中添加功能(扩展它)而不必继承子类。

所以,想象一下,你想添加一个quickAlertFunction这样你就可以很容易地显示带有标题,消息和OK按钮基本警报:

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

如果通过子类化做到了这一点,你需要更新你所有的ViewControllers从你的子类扩展,但如果你做了这个UIViewController的扩展,你不需要更新任何东西。

当你想为类添加一般功能,如果你想添加特定的修改,比如扩展一个文本框和添加一些自动完成或者其他东西,通常会使用扩展。你不想要这些修改在所有文本字段上都是全局的,只是你的子类的实例。

另外,最后一两件事要注意的..你可以不添加扩展属性,但你可以在子类

+0

_“......你不能在扩展添加属性” _:这仅适用于_stored实例属性_。你可以例如添加计算的实例属性以及扩展中的类型(静态)属性。 – dfri

+0

@dfri是好的留言。我应该更具体 – Scriptable

+0

谢谢!我明白了。它帮助我很多! :) –

相关问题