gpt4 book ai didi

objective-c - 改变 NSString 却什么也没有得到

转载 作者:行者123 更新时间:2023-12-03 16:24:29 25 4
gpt4 key购买 nike

在我的应用程序运行时的两个阶段,我将 NSString 发送到以下方法。

我在代码编辑器或调试器中没有收到任何警告或错误,但是当我 NSLog 输出 (secondString) 时,我只得到对象的内存地址。

有什么我没有在这里做的事情吗?

- (NSString*)validateString
{
NSString *firstString = [NSString stringWithFormat:@"%@", self];
[firstString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSMutableString *secondString = [firstString mutableCopy];
[secondString replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:NSMakeRange([secondString length], 0)];

secondString = [NSString stringWithFormat:@"%@", secondString];
NSLog (@"%@ and %@", firstString, secondString);

return secondString;

[firstString release];
[secondString release];
}

如果有任何帮助,我将不胜感激。

谢谢,瑞奇。

最佳答案

呃,代码在很多层面上都是错误的。

这是一个更简单的版本:

- (NSString*)validateString {
NSString *firstString = [self stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *secondString = [firstString stringByReplacingOccurrencesOfString:@"&" withString:@"%%26" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [firstString length])];

NSLog (@"%@ and %@", firstString, secondString);

return secondString;
}

构造[NSString stringWithFormat:@"%@", aString]是一个非常无用的语句,特别是当您有copy可用时。您的代码中还存在内存泄漏和崩溃(您创建字符串的副本 [+1 保留计数],将自动释放的字符串分配给同一变量 [+0 保留计数,原始字符串丢失并泄漏],然后释放自动释放的字符串[当自动释放池耗尽时崩溃])。

关于objective-c - 改变 NSString 却什么也没有得到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2107200/

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