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