gpt4 book ai didi

objective-c - NSString 和崩溃

转载 作者:行者123 更新时间:2023-11-28 22:43:36 28 4
gpt4 key购买 nike

我有这个代码:

-(void)getData:(NSString *)data: (id) tv: (id) soc
{
NSLog(@"\nin get data with data\n");
NSLog(data);

几个小时后,应用程序崩溃了,它到达了获取数据的数据,但没有打印数据,所以它在打印数据时崩溃了。调试引用了类似字符串长度函数的失败。在 XCode 中,数据有一个警告,表明它不是字符串文字并且可能不安全。现在我的经验告诉我最有可能的罪魁祸首是数据不知何故为空。但它还在日志中打印了一些看起来像是收到了一条典型消息的东西。它说它有来自套接字的 131 个字节。当我测试时,它上次崩溃了,它有 189 个字节。但它从不打印它。

数据是从套接字发送过来的,在接收数据时是这样的:

UInt8 buffer[len];
NSLog(@"Received %d bytes from socket %d\n",
len, CFSocketGetNative(s));
CFDataGetBytes(df, range, buffer);
NSString *oldtext = [mTextViewAlias text];

char buffer2[len];
for(int a=0; a<len; a++)
buffer2[a]=buffer[a];

NSMutableData *buffer3 = [[NSMutableData alloc] init];
[buffer3 appendBytes:buffer2 length:len];
NSString *newdata = [[NSString alloc] initWithData: buffer3 encoding:NSASCIIStringEncoding];

并且调用在打印数据时崩溃的类方法只是:

[mytelnet getData:newdata:mTextViewAlias:(__bridge id)(s)];

我会不会有内存泄漏或其他问题,几个小时后我的内存不足导致新数据的分配为空,即使我从大约 100 个字节开始也是如此?它会不会仅在我尝试在 nslog 中打印数据时崩溃,如果分配内存失败则不会更早崩溃?

迈克

最佳答案

代替

NSLog(data);

使用

NSLog(@"%@",data);

这可能无法解决您的根本原因,但您可以摆脱警告并可能获得一些更合理和有用的调试输出。

您也可以摆脱那个崩溃。但是,这不是 promise 。

关于objective-c - NSString 和崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817813/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com