1. ホーム
  2. swift

[解決済み] SwiftのAnyObjectとAny

2023-02-12 09:06:18

質問

どのような場合に AnyObject を使うのか、そしていつ Any を使うのか。

私の場合は Dictionary

[文字列:?]

??? : 可能です Int , Double , Float , String , Array , Dictionary

の違いを教えてください。 AnyAnyObject の2種類があり、私の場合はどちらを使えばいいのでしょうか?

どのように解決するのですか?

AnyObject は参照型(クラス)のみです。 Any は値型と参照型の両方です。

ですから、あなたは [String: Any] .

AnyとAnyObjectのタイプキャスティング

Swiftは非特異的な型を扱うために2つの特別な型を提供します。

  • Any は関数型を含むあらゆる型のインスタンスを表現することができます。 のインスタンスを表すことができます。
  • AnyObject は任意のクラス型のインスタンスを表すことができます。

NOTEです。

使用方法 AnyAnyObject は、その動作や機能を明示的に必要とする場合にのみ が必要なときだけです。コードで扱う型については、常に具体的であるべきです。 を明確にすることが望ましいです。

から プログラミング言語Swift : https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID342

-

また、Cocoa APIで作業するとき、AnyObjectの配列を受け取るのが一般的であることに注意してください。これは、Objective-Cの配列が型付けされていないためです。 これは、Objective-Cの配列が型付けされていないためです。したがって、それらを期待する配列の型にキャストする必要があります。

-

EDITです。 (2015年12月22日)

最後の記述について、Swift 2.0とXcode 7で変化していることに注意。

Apple が導入した '軽量' ジェネリック を導入し、多くの Cocoa API がすでに正しい型を返すようになりました。

EDITです。 (2016年10月18日)

なお、Swift 3.0では、Objective-Cの id は、現在では Any としてではなく AnyObject .