2016-10-22 1 views
0

Hallo Ich verwende Delegate Methoden in Objective C und brauche etwas Hilfe. Ich habe die folgenden Funktionen A und B. B ist die Delegiertenfunktion.Delegate-Methoden mit Semaphoren in Objective C verwenden

-(BOOL) A{ 
    int cmd = 73; 
    [_serialPort sendData:cmd]; 
    NSLog("Hello"); 
    return TRUE; 
} 

//Delegate function 

-(void) B{ 
    //When some data is received on the serial port function B is called 
} 

Aber Funktion A wartet nicht, bis Daten an der seriellen Schnittstelle empfangen werden. Wie kann ich die Funktion A blockieren, bis einige Daten auf der seriellen Schnittstelle empfangen werden? Ich verwende die ORSSerialPort-Bibliothek in objective-C.

+2

Blocking nennen, ist eine schlechte Idee sowieso. Normalerweise würden Sie die eingehenden Daten nur asynchron über Ihre Delegate-Methode behandeln. – Paulw11

+0

@ZaidPathan Ja, wenn ich Daten über eine serielle Schnittstelle senden möchte, rufe ich die Funktion A auf. – macNewbie

+0

Wo rufst du die Methode 'A'? –

Antwort

1

Offenbar verwendet ORSSerialPort bereits einen Delegaten für den Empfang von Daten.

- (void)serialPort:(ORSSerialPort *)serialPort didReceiveData:(NSData *)data { 
    // Assuming the delegate has method A 
    [self A]; 
} 

-serialPort:didReceiveData: ist die Delegatmethode aus ORSSerialPort.

Der obige Code wird im Grunde warten, bis Daten empfangen werden, und dann, wenn es passiert, wird es A.