在NSString的initWithFormat:arguments:方法中更改参数的值

时间:2015-07-10 22:47:49

标签: ios objective-c nsstring

我很难搞清楚以下事项:

我有一个初始化方法,它创建一个未使用的格式化NSString,其中包含一些未初始化的NSString参数,如下所示:

NSString *initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];

稍后在我的程序中,我使用一些值初始化这些参数但是当我打印到NSLog我的initialString时,参数仍为null。 如果我检查我的论点,他们会被初始化并提供我给他们的正确值。

initialString是对象的强引用属性,而参数为static NSStrings

结论是:

  1. 我想在我的程序开头用一些格式和某些未初始化的参数(硬编码)初始化一个NSString。
  2. 稍后,在运行时,我想使用我的初始字符串并让它从现在初始化的参数中读取值。
  3. 我怎么能实现这一目标?使用传递参考或KVO?

1 个答案:

答案 0 :(得分:1)

我不是某些我了解您,但为了使用更新后的值重新初始化initialString,您需要再次使用新值调用stringWithFormat:。这是因为stringWithFormat:将在调用它时采用arg1arg2的任何值,对这些值的更改不会影响格式化的字符串。

最好将该功能放入私有方法中,只要arg1arg2发生更改,就会更新实例变量(我认为是这样):

- (void)formatInitialStringWithArg1:(id)arg1 andArg2:(id)arg2
{
    self.initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];
}