【发布时间】:2014-10-15 08:36:14
【问题描述】:
我正在使用下面的代码在 for 循环中附加从服务器接收到的字符串。我无法弄清楚出了什么问题。追加后我收到一个空字符串。
文件名.h
@interface Communicator : NSObject <NSStreamDelegate>
{
...
NSMutableString *strServerResponse;
}
...
@property (nonatomic,strong) NSMutableString *strServerResponse;
@end
文件名.m
@implementation Communicator
@synthesize strServerResponse;
...
-(void) setUp {
strServerResponse = [NSMutableString string];
...
}
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)event {
uint8_t buffer[1024];
int len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSlog(@"output : ",output);
[strServerResponse appendString:output];
}
}
}
NSLog(@"strServerResponse : %@", strServerResponse);
}
..
strServerResponse 的日志始终为空。我哪里错了?此文件中的“设置”方法是从其他文件调用的。我已经使用调试并看到流程是正确的。这里的“输出”字符串打印正确的日志。以下是日志截图。
【问题讨论】:
-
buffer看起来像什么?len是什么? -
你的问题比其他任何帖子都更紧迫?
-
for 循环在哪里?
-
@NikolaiRuhe : 我今天有截止日期
-
@Droppy : 缓冲区包含字节格式的响应,后来转换为 NSString。
标签: ios loops string-concatenation nsmutablestring