虽然我曾在 Java、C 和 C++ 中工作过,但我对 Objective-C 还是比较陌生,而且我还在学习 Objective-C。
我有一个套接字、一个接收数据函数和一个文本视图。当数据进来时,我想将它附加到文本视图中。现在我的 textview 在开始时有一些预填充的文本。如果在每次调用接收数据的数据中,我只获取文本视图的当前文本,将其附加到自身中nsstring
:
NSString *oldtext = [mTextViewAlias text];
NSString *toSend = [oldtext stringByAppendingString: oldtext];
然后将文本视图设置为toSend
,它工作正常,我看到数据在我的文本视图中增长。
问题是,我想附加:
UInt8 buffer[len]; // which has data from the socket. len is set to amount of data on each call of receive data as follows
int len = CFDataGetLength(df);
我一直在尝试做的是将缓冲区转换为 ansstring
并追加。例如:
NSString *newdata = [NSString stringWithUTF8String: buffer];
我突然想到缓冲区可能不会以'\0'
字符终止,所以我什至创建了一个名为 char 的新缓冲区newbuffer[len+1];
并将缓冲区复制到其中并添加 a\0
作为最后一个字符。
我可以在第一次传递新数据时追加第一次,但第二次追加,追加到之前总是崩溃之前将缓冲区中的字符追加到文本的内容。
我在哪里做了一个小技巧if len > 10 assign buffer[10]='\0'
。它实际上让我在第三次崩溃之前抓取了两次数据。
看来我有两个问题之一,我不知道如何解决它。一个是我只能抓取缓冲区中的数据,并且这些nsstring
数据取决于它,当我在接收数据时更改缓冲区时,再次调用它会导致崩溃。或者也许它仍然是一个问题,'\0'
虽然我不知道如何仍然不在那里。