重複の可能性:
id の意味は何ですか?
私は iOS プログラミングの初心者です。
次の宣言を見ました
- (id)init
ここで (id) とはどういう意味ですか?
id
任意のオブジェクトと互換性のある型を示します。表記
- (id)init
init
クラスのインスタンス メソッドを意味します。通常、メモリ割り当て後にインスタンス化されたオブジェクトを初期化するために使用されます (通常は を使用して行われますalloc
)。Objective-C では、メソッドの戻り値の型は、メソッド名の前に型を括弧で囲んで宣言します。したがって、ここでは、init
メソッドが任意の Objective-C オブジェクトを返す可能性があることを意味します。
しかし、本当に、本当に Objetive-C のチュートリアルをグーグルで検索して読む必要があります。これは非常に基本的なことであり、チュートリアルやその他のドキュメントを読まないという言い訳はありません。
id
Objective-Cオブジェクトを表すプレーンC互換タイプです。これにより、CソースコードはObjective-Cオブジェクトを保存し、相互作用することができます。
タイプが「id」である理由は、-init メソッドが NSObject からずっと継承されているためです (objective-C ではメソッドをオーバーロードできないため、サブクラス化時に引数/戻り値のタイプを変更することはできません)。 . 「id」はどのオブジェクトでも機能するため、これで問題ありません。
編集最終的に「-[NSObject init]」をオーバーライドしていても、具体的なクラスを -init の戻り値の型として指定しても問題ないようです。
「id」の使用は単なる習慣だと思いますか?
ただし、「id」が割り当て時に任意のオブジェクト型を受け入れる「汎用の Objective-C オブジェクト ポインター」として機能するという事実は変更されていません。
-(id)initは、オブジェクト内の変数を初期化し、必要なセットアップを行うために呼び出されます(基本的にはコンストラクターです)。
重複の可能性は次 のようになります-(id)initメソッドは何に適していますか?