2014-10-25 13 views
8

Voglio creare un costume CGPoint sottoclasse di aggiungere alcune convenienze, ma ottengo questo errore:eredità da non-protocollo, di tipo non-class 'CGPoint'

Inheritance from non-protocol, non-class type 'CGPoint'

Non ho idea perché questo non è possibile. La mia classe è semplice come questo:

import UIKit 

class IYAttachPoint: CGPoint { 

    var holder: String = "No holder" 
    var unavailable: Bool = false 

} 

Ho provato ad aggiungere alcune librerie come CoreGraphics o QuartzCore senza successo. Se ci sono già alcune domande o soluzioni a questo problema, per favore indicami la giusta direzione.

risposta

11

Questo non è possibile perché si desidera ereditare un class da struct. CGPoint è struct e non supportano l'ereditarietà ad eccezione del protocols conforme.

Se si desidera eseguire questa operazione, utilizzare realmente composition anziché inheritance.

class IYAttachPoint { 

    var point:CGPoint? 
    var holder: String = "No holder" 
    var unavailable: Bool = false 
} 
+0

Grazie mille, questo mi aiuterà :) –

0

Il messaggio di errore che stai ricevendo ti sta dicendo esattamente cosa c'è che non va. Le uniche cose che possono essere usate come classi base sono, beh, le classi. Puoi anche avere la tua classe/struct/enum conforme a un protocollo, ma solo le classi possono essere utilizzate per l'ereditarietà. Poiché CGPoint è una struttura, non può essere utilizzato per scopi di sottoclassi.