iphone - 将新值设置为具有先前值的 NSString 变量

标签 iphone objective-c ios automatic-ref-counting

我正在使用最新的 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/

相关文章:

ios - 如何从可选函数 didMoveToPage 中获取索引?

ios - 在 Swift 中获取整数的第 n 位数字?

iOS 开发 : Updating Free App After Buying

objective-c - 将swift文件导入objective-c项目

objective-c - uiimageview 上的 Alpha 蒙版渐变

ios - NSPredicate 对对象数组中的对象应用谓词。

iphone - CCSprite 降低性能

iphone - 用于读取测量数据的蓝牙 LE 配置文件

iphone - 将字符串从一个 View 复制到 iphone 中的另一个 View

ios - 如果用户以编程方式点击 UITextfield,如何显示 UIDatePicker