【发布时间】:2010-03-20 16:59:24
【问题描述】:
我有一本书的以下代码。
有一个函数 loadPrefs,其中 NSString *userTimeZone 在函数结束之前被释放。
为什么?该字符串不是用 alloc 创建的,我假设 stringForKey 函数返回一个自动释放的 NSString。这是一个错误还是我错过了什么?难道是书上的错误? (我刚接触 Objective-C)
在 stringForKey 的文档中,它唯一提到的是:
特别注意事项
返回的 字符串是不可变的,即使值 你最初设置的是一个可变的 字符串。
代码:
- (void) loadPrefs {
timeZoneName = DefaultTimeZonePref;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userTimeZone = [defaults stringForKey: TimeZonePrefKey];
if (userTimeZone != NULL)
timeZoneName = userTimeZone;
[userTimeZone release];
show24Hour = [defaults boolForKey:TwentyFourHourPrefKey];
}
谢谢!!!!
【问题讨论】:
-
那是哪本书?这样我们就可以避免它......
-
iPhone SDK 开发。然而,尽管有这个代码错误,它还是一本非常好的书。
标签: iphone cocoa-touch