0

この構文が機能する理由

   NSString* newDisplayText = [currentDisplayText stringByAppendingString:digit];

これは、(最初​​に数字のNSStrinを新しい文字列に割り当て、次にstringByAppendingStringメソッドを使用してメッセージを送信します)。動作しません?

  NSString* newDisplayText = digit;
  [newDisplayText stringByAppendingString:currentDisplayText];

このメソッドを送信すると、以前に設定した値がオーバーライドされますか?

4

2 に答える 2

2

stringByAppendingString:オブジェクトを返しNSStringます。NSStringは不変であるため、レシーバーは変更されません。

あなたの場合、の結果をに割り当てる必要がありstringByAppendingStringますnewDisplayText

NSString* newDisplayText = digit;
newDisplayText = [newDisplayText stringByAppendingString:currentDisplayText];
于 2012-07-24T22:20:08.327 に答える
1

私はあなたが何を求めているのかを正確に理解するのに本当に苦労していますが、ここに試してみてください:

このメソッド-stringByAppendingString:はレシーバーを変更しません。新しいNSString*オブジェクトを作成し、それを返します。だから言って

[newDisplayText stringByAppendingString:currentDisplayText];

新しく作成された文字列を破棄しているため、まったく何もしません。

于 2012-07-24T22:20:45.487 に答える