Ich möchte ein Objekt mit einem Initialisierer initialisieren, der nur im SDK 10.10 vorhanden ist, und bei Bedarf auf einen zurückgreifen, der auch in 10.9 enthalten ist. Speziell die
+bodyWithTexture:size:
von SKPhysicsBody in SpriteKit. So etwas wie
if let body = SKPhysicsBody(texture: tex, size: cs) {
self.physicsBody = body
} else {
self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size)
}
Es ist mir bekannt, dass eine optionale Verkettung zum Aufrufen einer Methode für ein Objekt möglicherweise nicht implementiert ist. Gibt es eine Möglichkeit, dies für Initialisierer zu tun?
Antworten:
1 für die Antwort № 1Sie können zur Laufzeit überprüfen, ob die Klasse auf diesen Selektor reagiert:
if SKPhysicsBody.respondsToSelector("bodyWithTexture:size:") {
self.physicsBody = SKPhysicsBody(texture: tex, size: cs)
} ...