我正在使用最新的 SDK 和 XCode 开发 iOS 应用程序。
这是一个简单的问题,但我不知道该怎么做,因为我不想在我的代码中出现任何内存泄漏。
我在我的项目中使用 ARC 并且我有以下 header 声明:
@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
在我为其设置新值时会有值。
我的代码是否正确?
最佳答案
您的代码没有任何漏洞; ARC 会自动为您释放 appLanguage
的先前值。我会写 appLanguage = [newAppLanguage copy]
而不是使用 stringWithString:
,但效果是一样的。
关于iphone - 将新值设置为具有先前值的 NSString 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800953/