更改 NSString 的 initWithFormat:arguments: 方法的参数值
Changing an argument's value on NSString's initWithFormat:arguments: method
我很难弄清楚以下内容:
我有一个初始化方法,它使用一些 未初始化 的 NSString 参数创建未使用的格式化 NSString,如下所示:
NSString *initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];
稍后在我的程序中,我用一些值初始化这些参数,但是当我打印到 NSLog
我的 initialString
时,参数仍然是 null
。
如果我检查我的参数,它们会被初始化并提供我给它们的正确值。
initialString
是对象的强引用 属性 而参数是 static NSStrings
.
所以结论:
- 我想在我的程序开始时用某种格式和某些未初始化的参数(硬编码)初始化一个 NSString。
- 稍后,在运行时,我想使用我的初始字符串并让它从现在初始化的参数中读取值。
我怎样才能做到这一点?使用引用传递还是 KVO?
我不确定我理解你,但是为了使用更新后的值重新初始化 initialString
,你需要再次调用 stringWithFormat:
与新的价值观。这是因为 stringWithFormat:
将采用调用时 arg1
和 arg2
的任何值,并且更改这些值不会影响格式化字符串。
最好将该功能放入私有方法中,以便在 arg1
或 arg2
发生更改时更新实例变量(我假设是):
- (void)formatInitialStringWithArg1:(id)arg1 andArg2:(id)arg2
{
self.initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];
}
我很难弄清楚以下内容:
我有一个初始化方法,它使用一些 未初始化 的 NSString 参数创建未使用的格式化 NSString,如下所示:
NSString *initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];
稍后在我的程序中,我用一些值初始化这些参数,但是当我打印到 NSLog
我的 initialString
时,参数仍然是 null
。
如果我检查我的参数,它们会被初始化并提供我给它们的正确值。
initialString
是对象的强引用 属性 而参数是 static NSStrings
.
所以结论:
- 我想在我的程序开始时用某种格式和某些未初始化的参数(硬编码)初始化一个 NSString。
- 稍后,在运行时,我想使用我的初始字符串并让它从现在初始化的参数中读取值。
我怎样才能做到这一点?使用引用传递还是 KVO?
我不确定我理解你,但是为了使用更新后的值重新初始化 initialString
,你需要再次调用 stringWithFormat:
与新的价值观。这是因为 stringWithFormat:
将采用调用时 arg1
和 arg2
的任何值,并且更改这些值不会影响格式化字符串。
最好将该功能放入私有方法中,以便在 arg1
或 arg2
发生更改时更新实例变量(我假设是):
- (void)formatInitialStringWithArg1:(id)arg1 andArg2:(id)arg2
{
self.initialString = [NSString stringWithFormat:@"%@, %@", arg1, arg2];
}