Objective c NSOutput流写入操作在后台模式iOS 6下通过轮询和运行循环调度失败

Objective c NSOutput流写入操作在后台模式iOS 6下通过轮询和运行循环调度失败,objective-c,ios6,nsoutputstream,eaaccessory,Objective C,Ios6,Nsoutputstream,Eaaccessory,我有一个使用外部访问框架的应用程序。我遵循了苹果公司提供的名称为EADemo的示例。我正在通过轮询机制向输出流写入数据,在iOS5之前,它工作正常。当我使用iOS 6进行测试并等待HasSpaceAvailable时,它总是从这里的讨论中返回NO 我尝试将当前运行循环更改为主运行循环,但仍然没有成功 我发布了我的一些代码,以给出一个想法: [[mSession inputStream] setDelegate:self]; [[mSession inputStream] sche

我有一个使用外部访问框架的应用程序。我遵循了苹果公司提供的名称为EADemo的示例。我正在通过轮询机制向输出流写入数据,在iOS5之前,它工作正常。当我使用iOS 6进行测试并等待HasSpaceAvailable时,它总是从这里的讨论中返回NO 我尝试将当前运行循环更改为主运行循环,但仍然没有成功

我发布了我的一些代码,以给出一个想法:

    [[mSession inputStream] setDelegate:self];
    [[mSession inputStream] scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
    [[mSession inputStream] open];

    // get the output stream from session object and schedule it in the run loop
    // to get the events on the stream

    [[mSession outputStream] setDelegate:self];
    [[mSession outputStream] scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
    [[mSession outputStream] open];
    status  = YES;
我使用的写入方法来自EADemo代码

    while (([[mSession outputStream] hasSpaceAvailable]) && ([mWriteData length] > 0))
    {
        bytesWritten = [[mSession outputStream] write:[mWriteData bytes] maxLength:[mWriteData length]];
        if (bytesWritten == -1)
        {

            break;
        }
        else if (bytesWritten > 0)
        {
            NSString *str = [NSString stringWithFormat:@"Successfully written : %d bytes",bytesWritten];


            [mWriteData replaceBytesInRange:NSMakeRange(0, bytesWritten) withBytes:NULL length:0];
        }

        else if(bytesWritten == 0)
        {
            NSString* streamStatus = [NSString stringWithFormat:@"STREAM CAPACITY REACHED"];

        }

    }

}

else
{

    bytesWritten = -1;

}
我必须支持前台和后台的数据传输。我看到数据传输发生在前台,但在后台失败。在iOS 5之前,我一直认为该应用程序工作正常,但当我尝试在iOS 6设备上测试时,它失败了。有没有解决方案