0

nil 以外、空でない NSString が長さ 0 を返すという奇妙さ。これが私の文字列の設定方法です。

// 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]、デバッガーを使用してマウスオーバーすると要約テキストが "Some Value" として正しく表示されても、0 が返されます。

NSString の最適化?
このブログでは、同じ文字列を含む複数の NSString オブジェクトがメモリ内に浮遊している場合に発生する可能性がある NSString の最適化について説明しています。これと何か関係があるのではないかと思います。NSString はクラスクラスターとして実装されており、NSString オブジェクトは最適化のために舞台裏で任意の数の関連するプライベート クラス (*__NSCFString、__NSCFStringConstant*) に変換される可能性があるため、おそらくこれが問題の原因です。クラスはたまたま長さメッセージに対してゼロを返します...

考え?

4

1 に答える 1

0

使ってみませんか

 @property (copy, nonatomic) NSString *myStringValue;
于 2013-03-25T22:18:31.537 に答える