我是Objective C的新手,我遇到了以下问题:
-(void) funcA
{
// array is NSMutableArray within class definition and initialised at alloc method
[array setLength:0];
...
// make search and delegate itself for callback to funcB
}
-(void) funcB:(NSData*) data
{
[array: appendData:data];
}
(void) funcC
{
//Finished collecting data
//Signal caller for funcA that all data is received.
}
这个想法是调用 funcA 以连接到服务器,该服务器通过调用 funcB 多次附加数据,然后在发送所有数据时最后调用 funcC。还行吧。
我遇到的问题是 funcA 可以被多次调用,这导致数组在处理旧请求的过程中将被设置为长度 0。
现在我已经尝试了 funcA 中的 [NSLock lock] 和 funcC 中的 [NSLock unlock] 但是第二个请求上的 lock 调用造成了死锁。我了解同步是解决此问题的另一种方法,但我只看到函数中的块。
我通常用 C 编程,我会使用 pthread_mutex 但我想一直坚持使用 obj C。假设它们是不同的线程,但似乎它们不是(因为死锁)。
我怎么解决这个问题?
谢谢。印地