【问题标题】:Using [NSString stringWithString: someString] vs. [someString copy] when setting instance variable设置实例变量时使用 [NSString stringWithString: someString] vs. [someString copy]
【发布时间】:2014-08-17 16:22:26
【问题描述】:

我知道,在 ObjC 类中设置实例变量(例如 NSString 变量)时,确保类拥有自己的变量通常是最佳实践,例如:

NSString *someInstanceVariable = [NSString stringWithString: someNSStringObject];

我的问题是,这与以下(实际上)有什么不同吗?

NSString *someInstanceVariable = [someNSStringObject copy];

【问题讨论】:

  • 最终结果是一样的。如果 someNSStringObject 真的是一个可变字符串,两者都会保护你。
  • 如果您使用的是非 ARC 代码库,stringWithString: 会返回一个自动释放的值,而copy 不会。除此之外真的没有任何区别。
  • rmaddy 和 BergQuester - 正如我所怀疑的那样,但想检查一下。谢谢!

标签: objective-c cocoa nsstring instance-variables


【解决方案1】:

+[NSString stringWithString:] 永远不会返回 nil

如果someStringnil,则[someString copy] 返回nil

【讨论】:

  • 但是stringWithString:会抛出异常(app crash),如果参数是nil
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多