我正在处理应用程序的流媒体部分。我需要把流式处理放在后台线程上,它使用NSinputstream和NSOutputstream。然后我在同一线程上通过这个流传输通道发送http命令。我收到了NSStreamEventOpenCompleted和NSStreamEventHasSpaceAvailable,也收到了服务器端的http请求,但它没有引发事件是否有可用字节。我也收不到回复...我不知道问题出在哪里。下面是我的部分代码:
我正在使用的线程:
- (void)backgroundThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLock *threadLock = [[NSLock alloc] init];
while (quitProcess)
{
if (queue.count > 0)
{
[threadLock lock];// Blocks other threads
cmdQueue = [queue copy];
[queue removeAllObjects];
[threadLock unlock];
}
else
{
sleep(1);
}
if (cmdQueue){
for (NSString* cmd in cmdQueue)
{
if ([cmd isEqualToString:@"subscribe"]){
[self openCmdLine];
}else if ([cmd isEqualToString:@"dataConnect"]){
[self dataConnect];
}else if ([cmd isEqualToString:@"openCmdLine"]){
[self openCmdLine];
}else if ([cmd isEqualToString:@"closeCmdLine"]){
[self closeCmdLine];
}else if ([cmd isEqualToString:@"handshake"]){
sleep(5);
[self cmdHandshake];
}else if ([cmd isEqualToString:@"topvol"]){
[self cmdTopVol];
}else{
//subscribe or unsubscribe
}
}
cmdQueue = nil;
}
}
[pool drain];
}发布于 2012-01-05 15:19:08
原因是因为NSRunloop负责连接回调,你应该把它放在你的代码中
https://stackoverflow.com/questions/8623845
复制相似问题