Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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
Ios NSOutputStream未正确写入数据_Ios_Objective C_Cocoa Touch_Stream_Nsoutputstream - Fatal编程技术网

Ios NSOutputStream未正确写入数据

Ios NSOutputStream未正确写入数据,ios,objective-c,cocoa-touch,stream,nsoutputstream,Ios,Objective C,Cocoa Touch,Stream,Nsoutputstream,使用NSSTREATEVENTHASSPACE available事件,我试图将一个简单的NSString写入NSOutputStream。以下是该活动的内容: uint8_t *readBytes = (uint8_t *)[data mutableBytes]; readBytes += byteIndex; // instance variable to move pointer int data_len = [data length]; unsigned int len = ((data

使用NSSTREATEVENTHASSPACE available事件,我试图将一个简单的NSString写入NSOutputStream。以下是该活动的内容:

uint8_t *readBytes = (uint8_t *)[data mutableBytes];
readBytes += byteIndex; // instance variable to move pointer
int data_len = [data length];
unsigned int len = ((data_len - byteIndex >= 12) ?
                            12 : (data_len-byteIndex));
uint8_t buf[len];
(void)memcpy(buf, readBytes, len);
len = [output write:(const uint8_t *)buf maxLength:len];
NSLog(@"wrote: %s", buf);
byteIndex += len;
我几乎完全是从苹果那里得到的。数据在我的viewDidLoad方法中初始化为

data = [NSMutableData dataWithData:[@"test message" dataUsingEncoding:NSUTF8StringEncoding]];
[data retain];
HasSpaceAvailable事件被调用两次。在第一种情况下,整个消息都会附加字符“N.”。第二次,NSLog报告写入了一条空白消息(非空)。然后,发生EndEncounted事件。在那种情况下,我有

NSLog(@"event: end encountered");
assert([stream isEqual:output]);
NSData *newData = [output propertyForKey: NSStreamDataWrittenToMemoryStreamKey];
if (!newData) {
    NSLog(@"No data written to memory!");
} else {
    NSLog(@"finished writing: %@", newData);
}
[stream close];
[stream removeFromRunLoop:[NSRunLoop currentRunLoop]
                  forMode:NSDefaultRunLoopMode];
[stream release];
output = nil;
break;

我也从苹果公司得到了这个。但是,“没有数据写入内存!”会被记录。没有任何错误发生在任何时候,并且没有数据出现在另一端。

< P>我似乎通过使用低级别的核心基础方法来代替这一点,而不是使用更高级别的NSFASH方法。我将本文作为起点:

它涵盖了大量的输入和输出流,并有代码示例


希望这有帮助。

< P>我似乎通过使用低层次的核心基础方法代替了更高级的NSFASH方法来解决这个问题。我将本文作为起点:

它涵盖了大量的输入和输出流,并有代码示例


希望这有帮助。

更新:即使我在调用[stream write:]后立即检查[stream Property Workey:NSStreamDataWriteEntomermoryStreamKey],它仍然是(null)。这方面的任何更新。你最终找到答案了吗?更新:即使我在调用[stream write:]后立即检查[stream Property Workey:NSStreamDataWriteEntomeMoryStreamKey],它仍然是(null)。这方面的任何更新。你最终找到答案了吗?