2

プロパティを持つクラスPersonの人物オブジェクトは住所、年齢です。プロパティを確認すると、次のように画面にアドレスを出力します。

      NSLog(@"Add: %@, length: %i", person.address, [person.address length]);

結果は次のとおりです。加算: nil、長さ: 6

文字列が null なのに長さが 6 と表示される理由を説明してもらえますか?

ありがとう。

4

3 に答える 3

1

おそらく、フィールドに "(null)" という文字列値を取得している可能性があります。これは 6 文字の長さです。

于 2012-08-19T08:44:45.480 に答える
0

住所とは何ですか?NSStringだと思いますか?%iの代わりに長さとして%dまたは%luを使用します(%luを使用する場合はunsigned longにキャストします)。これにより、正しい結果が得られます。

長さは結果としてNSUIntegerを与えます。したがって、正しい文字列形式指定子は%luになりますが、%dも機能するはずです(これを考えると、私は常に%dを使用します)。私は%iとしては決して...

NSLog(@"%lu", (unsigned long)string.length)

次の形式を確認してください。

https://developer.apple.com/library/mac/ipad/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

于 2012-07-30T07:33:19.897 に答える
0

おそらく探している答えは、間違った文字列形式指定子を使用しているということです。何が何だかわかりません%i%dは整数%u用で符号なし用なので、次のものが必要です。

NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]);

しかし...長さは、あなたが思っているものを返さない可能性があります。

person.addressがの場合nil、メッセージlengthを送信しても長さは返されません (「何もない」長さは?)。たまたま、Objective C ランタイムはゼロを返すため、例は「機能」しますが、間違いなく正しくありません。

于 2012-07-30T07:53:20.757 に答える