J'essaye d'ajouter une propriété stockée à un NSBezierPath en le sous-classant. Cependant, le code suivant plante Playground:Pourquoi cette sous-classe simple de NSBezierPath plante-t-elle mon OSX Playground?
import Cocoa
class MyNSBezierPath: NSBezierPath {
private var someProperty: Bool
override init() {
someProperty = false
super.init()
}
required init?(coder aDecoder: NSCoder) {
self.someProperty = false
super.init(coder: aDecoder)
}
}
// the following line causes the Playground to fully crash
let somePath = MyNSBezierPath()
L'erreur Aire de jeu (ci-dessous) semble indiquer un problème avec NSCoder
mais je pensais que juste passer l'appel par la superclasse comme ce serait OK. Qu'est-ce que je fais mal?
UNCAUGHT EXCEPTION (NSInvalidUnarchiveOperationException):
*** - [NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class
(__lldb_expr_22.MyNSBezierPath) for key (root);
the class may be defined in source code or a library that is not linked
UserInfo: { "__NSCoderInternalErrorCode" = 4864;}
Hints: None
Hmmm ... lire [cette autre réponse] (http://stackoverflow.com/questions/29867782/uibezierpath-subclass-initializer) il semble que le sous-classement NSBezierPa Cela peut être une mauvaise idée. Peut-être que je vais devoir aller avec un emballage - ce qui est dommage car il rend le code moins lisible :( –
C'est un accident méchant aussi ... Je suis un peu surpris que Xcode ne gère pas mieux .. –
Vous et moi les deux ... –