【发布时间】:2010-08-09 08:57:42
【问题描述】:
只是关于 NSStrings 的一个简单问题,我有一段代码为字符串赋值,具体取决于发现的内容,它是由 substringToIndex 或常量字符串 @"0.00" 赋值的,可以吗?使用
// Save if value found, otherwise set to 0.00
if (parsedCharacters == nil || [parsedCharacters isEqualToString:@""])
self.currentDiscountedPrice = @"0.00";
else
{
// Truncate extra digits from string to 2 decimal places (find full stop, save 2 places after it)
NSRange fullStopRange = [parsedCharacters rangeOfString:@"."];
self.currentDiscountedPrice = [parsedCharacters substringToIndex:(fullStopRange.location + 3)];
}
对于分配,因为它将释放旧值并保留新值?
无法知道在上一次迭代中是为 var 分配了常量字符串还是 substringToIndex 返回值,但有人告诉我在常量字符串上调用 retain & release 是无害的,这是真的吗?
【问题讨论】:
-
我基本上要问的是,在上面的代码中,我应该更明确地释放旧值并保留 substringToIndex 值,还是只使用 self.currentDiscountedPrice = 两个分配?
-
OT:我会写
parsedCharacters.length == 0,而不是parsedCharacters == nil || [parsedCharacters isEqualToString:@""]。由于 Objective-C 的 message-to-nil 语义,这将检测到nil,对于非 nil 可能会稍微快一些,当然也更简单。
标签: cocoa nsstring constants retain