1

这里的问题是,我从 2 个文本字段接收数据,我想将该数据附加到一个 mutableData 中以仅获取 1 个数组并通过 OutputStream 发送它。这是代码

我将下一个声明为全局变量

NSMutableData* bufferToSend;

在 init 方法中,我做了下一个:

bufferToSend = [[NSMutableData alloc] initWithCapacity:0];

在我发送信息的方法:

NSString* stringArrayFromTextField1;
[bufferToSend initWithCapacity:0];
stringArrayFromTextField1 = [[NSString alloc] initWithString:[textfield1 text]];
[bufferToSend appendData:stringArrayFromTextField1]; //here gives me segmentation fault

当代码尝试执行附加时它会崩溃我错过了什么吗?

4

2 回答 2

2

您的代码中有几个错误/问题:

  • [bufferToSend initWithCapacity:0];对于已经初始化的对象没有意义。
  • [[NSString alloc] initWithString:...]调用完全没有必要,因为 [textfield1 text]它已经是一个字符串。
  • appendData:期望NSData,不是NSString。这可能是导致崩溃的原因。(编译器没有显示关于不兼容类型的警告吗?)

然后代码简化为:

NSMutableData* bufferToSend;
bufferToSend = [[NSMutableData alloc] initWithCapacity:0];

NSData *dataFromTextField = [[textfield1 text] dataUsingEncoding:NSUTF8StringEncoding];
[bufferToSend appendData:dataFromTextField];
于 2013-07-02T17:55:05.490 回答
0

您正在传递一个NSString对象,其中需要一个NSData对象。但是我看不出有任何理由将它附加到您刚刚创建的数据中,因为它是空的!所以这很好:

stringArrayFromTextField1 = [[NSString alloc] initWithString:[textfield1 text]];
bufferToSend= [[NSKeyedArchiver archivedDataWithRootObject: stringArrayFromTextField1] mutableCopy];
于 2013-07-02T17:56:30.463 回答