【发布时间】:2012-12-10 12:28:12
【问题描述】:
我正在使用最新的 SDK 和 XCode 开发一个 iOS 应用程序。
这是一个简单的问题,但我不知道该怎么做,因为我不希望我的代码出现任何内存泄漏。
我在我的项目中使用 ARC,并且我有以下标头声明:
@interface UserPreferences : NSObject
{
NSUserDefaults* prefs;
}
@property (nonatomic, readonly) NSString* appLanguage;
// More code
- (void) setAppLanguage:(NSString *)appLanguage;
// More code
@end
这就是我实现- (void) setAppLanguage:(NSString *)appLanguage;的方式。
- (void) setAppLanguage:(NSString *)newAppLanguage
{
[prefs setObject:appLanguage forKey:APP_LANGUAGE_KEY];
appLanguage = [NSString stringWithString:newAppLanguage];
}
appLanguage = [NSString stringWithString:newAppLanguage]; 正确吗?
我不知道appLanguage 设置一个新值时会有一个值。
我的代码正确吗?
【问题讨论】:
-
如果 appLanguage 是 NSString 并且 newAppLanguage 也是 NSString 你不需要做 stringWithString:,你可以等同于 two.appLanguage=newAppLanguage;
-
appLanguage will have a value when I set a new one to it.是的,它将具有,新值将替换其先前值。您可以简单地编写@property (strong) NSString* appLanguage;和您的 setAppLanguage 来覆盖默认设置器。无需将其设为只读,然后将其设为 writ+read,从而造成混乱。
标签: iphone objective-c ios automatic-ref-counting