"Unrecognized Selector" nur auf Device, nicht im Simulator

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • "Unrecognized Selector" nur auf Device, nicht im Simulator

    Hi!

    woran kann es liegen, dass eine App im Simulator stabil und in vollen Umfang läuft, aber
    auf dem Device mit einer Run-Time-Meldung "unrecoginzed selector" crashed?

    Soweit ich weiß deutet die Meldung auf eine nicht implementierte Methode hin. Aber
    wie kann eine Methode im Simulator vorhanden sein, aber nicht auf dem Device.

    Danke für Eure Hilfe!
    "There is no spoon!"
  • -[UIWindow setViewToObserve:]: unrecognized selector sent to instance 0x164550'


    Ich habe eine Subclass von UIWindows TapDetectingWindow geschrieben. Die Variabel ist vorhanden, property und synthesize sind da. Wie gesagt, im Simulator ist es ein Traum.


    Gruß

    "There is no spoon!"
  • Wo und wie wird Deine Instanz denn vermeintlich angelegt? Die Nachricht wird ja ganz offensichtlich eben nicht an Deine Instanz sondern an eine von NSWindow geschickt.
    if (!exit(-1)) fprintf(stderr, "exit call failed. Program will continue\n");
  • Es geht darum Delegate Methoden zu haben, um Gestures auch im UIWebView abfangen zu können. Dazu habe nach einigem Googlen folgendes Tutorial umgesetzt:

    three20.pypt.lt/uiwebview-tap-scroll-detection

    Ich habe mitllerweile auch eine Idee wo der Fehler ist. Der obige Tip wer/wann/wie inittialisiert geht vermutlich in die richtige Richtung. Mir ist nur nach wie vor völlig unklar wie das Problem im Simulator nicht auftaucht. Die Objekte und Methoden die zu einen gegebenen Zeitpunkt zur Verfügung stehen sollten doch die Gleichen sein, egal ob ich mich im Simulator oder auf dem Gerät befinde?!
    "There is no spoon!"
  • doertydoerk schrieb:

    Es geht darum Delegate Methoden zu haben, um Gestures auch im UIWebView abfangen zu können. Dazu habe nach einigem Googlen folgendes Tutorial umgesetzt:

    three20.pypt.lt/uiwebview-tap-scroll-detection

    Ich habe mitllerweile auch eine Idee wo der Fehler ist. Der obige Tip wer/wann/wie inittialisiert geht vermutlich in die richtige Richtung. Mir ist nur nach wie vor völlig unklar wie das Problem im Simulator nicht auftaucht. Die Objekte und Methoden die zu einen gegebenen Zeitpunkt zur Verfügung stehen sollten doch die Gleichen sein, egal ob ich mich im Simulator oder auf dem Gerät befinde?!


    Den vorgeschlagenen Ansatz halte ich für grundsätzlich falsch.
    Kümmere Dich um UIGestureRecognizer.
    Das ist genau ein Anwendungsfall, für den die Klasse gemacht wurde.
    I would be embarrassed if they did not spy on me.
  • UIGestureRecognizer war der erste Ansatz (Code unten). Der UIWebView reagiert darauf aber nicht, auch wenn es bei anderen UIView Subclasses sonst gut funktioniert. Nur deshalb habe ich überhaupt nach Alternativen geschaut.

    Quellcode

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    4. [singleTap setNumberOfTapsRequired:1];
    5. [infoView addGestureRecognizer:singleTap];
    6. [singleTap release];
    7. ....


    Quellcode

    1. - (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
    2. NSLog(@"Tap detected!");
    3. }
    "There is no spoon!"

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von doertydoerk ()

  • doertydoerk schrieb:

    Mir ist nur nach wie vor völlig unklar wie das Problem im Simulator nicht auftaucht. Die Objekte und Methoden die zu einen gegebenen Zeitpunkt zur Verfügung stehen sollten doch die Gleichen sein, egal ob ich mich im Simulator oder auf dem Gerät befinde?!

    Nein, nicht unbedingt. Der Simulator läuft auf dem Mac und ist anscheinend nicht komplett abgekapselt. Es gibt einige Sachen, die am Mac funktionieren, nicht aber auf dem Device.
    Widgetschmie.de • Life is too short for gadgets
  • Ich habe das Problem wie folgt eingegrenzt:

    Lass ich den Code im Sim laufen wir wird die Nachricht [TapDetectingWindow setViewToObserve:] (das ist meine Subclass von UIWindow) versendet und alles ist gut. Auf dem Gerät wird aber [UIWindow setViewToObserve:] aufgerufen, was natürlich nicht geht. Ich habe meinen Code gecheckt und bin sicher, dass ich mein Window überall als TapDetectingWindow definiert habe. Auch das entsprechende InterfaceBuilder Object ist als TapDetectingWindow definiert.

    Woran kann es noch liegen, dass mein Window mit seiner Superclass instanziert wird?
    "There is no spoon!"