Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 后台线程中的NSInputStream不';不要将NStreadVenthasbytesAvailable称为NStreadVenthasbytesAvailable_Objective C_Nsthread_Cfnetwork_Nsinputstream_Nsoutputstream - Fatal编程技术网

Objective c 后台线程中的NSInputStream不';不要将NStreadVenthasbytesAvailable称为NStreadVenthasbytesAvailable

Objective c 后台线程中的NSInputStream不';不要将NStreadVenthasbytesAvailable称为NStreadVenthasbytesAvailable,objective-c,nsthread,cfnetwork,nsinputstream,nsoutputstream,Objective C,Nsthread,Cfnetwork,Nsinputstream,Nsoutputstream,我正在处理应用程序的流媒体部分。我需要将流处理放在后台线程上,它使用NSinputstream和NSOutputstream。 然后我在同一个线程上通过这个流通道发送http命令。 我接收到NSSTREATEVENTOPENCOMPLETED和NSSTREATEVENTHASSPACEABLE,还接收到服务器端的http请求,但它不会引发事件(有可用字节)。我无法收到回复。。。我不知道是什么问题。以下是我的部分代码: 我正在使用的线程: - (void)backgroundThread { NS

我正在处理应用程序的流媒体部分。我需要将流处理放在后台线程上,它使用NSinputstream和NSOutputstream。 然后我在同一个线程上通过这个流通道发送http命令。 我接收到NSSTREATEVENTOPENCOMPLETED和NSSTREATEVENTHASSPACEABLE,还接收到服务器端的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];
}

原因是负责连接回调的nsrunlop,您应该将其放在代码中。

原因是负责连接回调的nsrunlop,您应该将其放在代码中。

您发布的代码与流媒体无关。顺便说一句,你的线程锁根本没有效果,因为你正在为每个线程创建一个新的线程锁。更重要的是,它正在泄漏,因为你没有释放它。谢谢你,所以我为你发布了你需要的东西,关于锁,我现在理解了。你发布的代码与你的流媒体无关。顺便说一句,你的线程锁根本没有效果,因为你正在为每个线程创建一个新的线程锁。更重要的是,它正在泄漏,因为你没有释放它。谢谢你,所以你需要我为你张贴,关于锁我现在明白了。