2016-11-19 63 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

謝謝!我明白了。它幫助我很多! :) –

相關問題