2016-03-29 11 views
-1

Ich verwende diese library und alles fein gearbeitet, bevor ich aktualisiert swift 2.2swift 2.2 Unbekannter Selektor an Instanz 0x7ff411c6ef90' gesendet

Die ersten Warnungen war ich bekam, dass ich das musste meine Wähler auf die neue #selector aktualisieren Ich habe.

Aber jetzt bekomme ich den Fehler:

**Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Test.DOFavoriteButton select:]: unrecognized selector sent to instance 0x7ff411c6ef90'

Als ich im Code aussehen finde ich diese Funktionen:

public func select() { 
    select(true) 
} 

public func select(animate animate: Bool) { 
    selected = true 
    imageShape.fillColor = imageColorOn.CGColor 

    if animate { 
     CATransaction.begin() 

     circleShape.addAnimation(circleTransform, forKey: "transform") 
     circleMask.addAnimation(circleMaskTransform, forKey: "transform") 
     imageShape.addAnimation(imageTransform, forKey: "transform") 

     for i in 0 ..< 5 { 
      lines[i].addAnimation(lineStrokeStart, forKey: "strokeStart") 
      lines[i].addAnimation(lineStrokeEnd, forKey: "strokeEnd") 
      lines[i].addAnimation(lineOpacity, forKey: "opacity") 
     } 

     CATransaction.commit() 
    } 
} 

Wenn ich es richtig die ersten select() verstehen sollte wechselt die belebten zu true?

Aber wenn ich es ändern:

public func select() { 
    selected = true 
} 

Die App ohne Absturz läuft aber die Animation wird nicht ausgeführt werden.

Was macht select(true)?

+1

Sie müssen den Code einfügen, in dem Sie einen '# Selektor 'einrichten. Auch die anderen Methoden namens 'select' haben Sie, weil * dieser * Code nicht einmal kompiliert wird. (Sie müssten 'select (animate: true)' aufrufen) – nhgrif

+0

Es würde kompilieren, 'UIResponder' hat eine' select: 'Methode – dan

+0

@dan Das setzt voraus, dass dieser Code Teil einer Klasse ist, die von' UIResponder' erbt . Es ist wahrscheinlich eine relativ sichere Wette, aber dieser Kontext fehlt hier vollständig. Diese Frage fehlt im Detail deutlich. – nhgrif

Antwort

0

es gelöst die Signatur des Verfahrens durch Zugabe von:

public func select() { 
    select(animate: true) 
} 

Andernfalls Verfahren Deklaration als

modifiziert werden können

public func select(animate: Bool)

, daher

public func select() { 
    select(true) 
} 

wird Gültigkeit für complie

Verwandte Themen