当调试器摘要显示文本时,为什么此NSString长度为零?

时间:2013-03-25 20:07:22

标签: objective-c c xcode nsstring

非零,非空NSStrings返回零长度的奇怪性。以下是我设置字符串的方法。

// property is declared like so in .h
@property (strong, nonatomic) NSString *myStringValue;

// synthesized like so in .m
@synthesize myStringValue;

// most times property is set directly like so (.m)<br />
// ...
self.myStringValue = @"Some Value";
// ...

// property is (sometimes) set like so (.m)<br />
// copied from another vc
// ...
self.myStringValue = anotherObj.myStringValue;
// ...

零长度
通过从另一个对象(后一种情况)分配属性来设置属性,并稍后在代码中的某个点使用时,[self.myStringValue length]返回0,即使使用调试器显示鼠标悬停摘要文本正确为“Some Value”。

NSString优化?
This blog讨论了当内存中包含多个包含相同字符串的NSString对象时可能发生的NSString优化。我想知道这是否与它有关。由于NSString是作为类集群实现的,并且NSString对象可以在幕后转换为任意数量的相关私有类(* __ NSCFString,__ NSCFStringConstant *)以进行优化,或许这就是导致我的问题的原因,如果这些中的任何一个对于长度消息,类碰巧返回零...

思想?

1 个答案:

答案 0 :(得分:0)

为什么不尝试使用

 @property (copy, nonatomic) NSString *myStringValue;