9

この質問とその質問に対する受け入れられた回答を読んでいる間、これら2つのタイプの方法の違いを理解できませんでした。実際に例を読んで要点はわかりましたが、その後、独自の静的メソッドを作成できませんでした。

客観的なc静的メソッドで静的メソッドを作成してグーグルで試しました

THISおよびTHISの質問へのリンクが返されました。ただし、ここでの例は、質問の最初のリンクによるCLASS メソッドです。これは私を混乱させます。

クラスメソッドではない静的メソッドを作成する方法を教えてもらえますか?

これに関する任意の光をいただければ幸いです。

4

1 に答える 1

22

あなたが抱えている問題は次のとおりです。 Obj-Cには静的メソッドがないため、それらを作成できません。

静的メソッドとクラス メソッドの違いは、言語の概念の違いです。Java や C++ などの言語には静的メソッドがあり、Obj-C や Ruby などの言語にはクラス メソッドがあります。

主な違いは、

  1. 静的メソッドはすべてのインスタンス間で共有されます (これは Obj-C には存在しません)。これらは、変数の型に応じて (コンパイル時に) 静的にディスパッチされます。

  2. クラスメソッドは、クラスのメソッドです。Obj-C や Ruby などの言語では、クラス自体が別のクラス (メタクラス) のインスタンスです。メソッド宣言の前に使用+すると、クラスでメソッドが定義されます。技術的には、これは単なるインスタンス メソッドであり、別のオブジェクト上にあります。

クラスメソッドの概念を完全に理解していなくても心配はいりません。時間がかかります。簡単にするために、インスタンス間で共有されるメソッドと考えることができますが、サブクラスでオーバーライドできます。

于 2013-04-12T07:59:45.733 に答える