【发布时间】:2016-08-08 19:16:19
【问题描述】:
我正在使用 Logos/Theos 为 iOS 开发一个调整。
我需要始终存储用户输入的最后两个字符。
我的代码是:
static NSString *lastTwoChars = [[NSString alloc] init];
...
if (lastTwoChars.length < 2) {
lastTwoChars = [lastTwoChars stringByAppendingString:text];
} else {
lastTwoChars = [lastTwoChars stringByAppendingString:text];
lastTwoChars = [lastTwoChars substringFromIndex:1];
}
...
(在这个范围内,text 是他们在键盘上输入的最后一个字符)
这段代码运行良好,直到我按下第三个字符。经过很长时间的反复试验,我发现这是因为变量lastTwoChars被释放了,变成了一个不同的对象。
我不知道如何防止对象被释放并更改为另一个对象。我尝试retain 变量,但要么我做错了,要么不起作用。
任何帮助将不胜感激。
【问题讨论】:
-
您使用的方法确实会返回一个新的
NSString对象。您使用的是 ARC 还是 MRC? -
@Droppy 不管默认是什么。我从未将其配置为不同。
标签: ios objective-c theos logos