1

Objective-C 2.0 では、値を NSNumber プロパティに割り当てています。

myObject.myProperty = 5;

コンパイラは私に教えてくれます:

「int」から「NSNumber *」への暗黙的な変換は、ARC では許可されていません

それで、私がこれを行うとどうなるかを考えました:

myObject.myProperty = @5;

デバッガーでプロパティを調べると、次のように表示されます。

_myProperty = (__NSCFNumber *) (int)5

これにより、コンパイラは満足し、悪いことは何も起こらないように見えますが、何が起こっているのかよくわかりません。

この省略形は正確に何をしますか? また、安全ですか? NSCF番号とは何ですか? ドキュメントには表示されません。

4

2 に答える 2

1

安全であるだけでなく、正しいです。コンパイラでサポートされていない機能では機能しません。これはリテラル数定義と呼ばれます。@""リテラル文字列 ( )、辞書 ( @{})、配列 ( ) と同様@[]です。

于 2013-10-03T15:30:32.687 に答える