【问题标题】:Using delegate methods with semaphores in Objective C在 Objective C 中使用带有信号量的委托方法
【发布时间】:2016-10-22 04:26:37
【问题描述】:

您好,我在 Objective C 中使用委托方法,需要一些帮助。我有以下函数A和B。B是委托函数。

-(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
}

但函数 A 不会等到串行端口上接收到数据。在串口收到一些数据之前,如何阻止函数 A?我在 Objective-C 中使用 ORSSerialPort 库。

【问题讨论】:

  • 无论如何,阻止是个坏主意。您通常只需通过委托方法异步处理传入数据
  • @ZaidPathan 是的,当我想通过串口发送数据时,我调用函数 A。
  • 你在哪里调用方法A
  • 当委托被调用时,你应该从B调用方法A

标签: ios objective-c multithreading delegates semaphore


【解决方案1】:

看起来 ORSSerialPort 在您接收数据时已经使用了委托。

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

-serialPort:didReceiveData: 是来自 ORSSerialPort 的委托方法。

上面的代码基本上会等到收到数据,然后一旦发生,就会调用A。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多