これらと違いを書いているときの状況を誰かが私に説明できますか?
- (id) startsWithMinus:(NSString *)title;
また
+ (id) startsWithPlus:(NSString *)title;
これらと違いを書いているときの状況を誰かが私に説明できますか?
- (id) startsWithMinus:(NSString *)title;
また
+ (id) startsWithPlus:(NSString *)title;
で始まる+
ということは、クラスメソッドを宣言していることを意味します。で始まる-
ということは、インスタンス メソッドを宣言していることを意味します。
これらの用語に慣れていない場合は、説明についてこの質問を参照してください。
ここで示したように、+ はクラス メソッドを示し、- はインスタンス メソッドを示します。
プログラミングに関連する可能性が高い重要な違いは、クラス メソッドとインスタンス メソッドをいつ使用するかです。クラス メソッド (+) は、クラスを使用して呼び出す単純なメソッドです。つまり、[[DataAccess クラス] getInfoFromServer] に沿ったものです。プロパティにアクセスする必要はないが、クラスに関連する特定の動作が必要な場合は、クラス メソッドを使用します (たとえば、サーバーから情報を取得するために DataAccess クラスを呼び出すことは理にかなっています)。
または、オブジェクトを割り当てて初期化し、そのプロパティを使用する場合は、インスタンス メソッドを使用します。たとえば、DataAccess * accessObject = [[DataAccess alloc] init] は DataAccess オブジェクトを提供します。そのオブジェクトには、.h ファイルまたは .m ファイルの @interface で宣言される関連プロパティがあると思われます。
たとえば、DataAccess クラスに沿って、@implementation の前に .m ファイルで次のような宣言を行います。
@interface DataAccess()
@property (strong, non-atomic) NSDictionary * data;
@end
次に、任意のインスタンス メソッドで、オブジェクトにデータ セットがあると想定できます。そのため、インスタンス メソッドで self.data などの呼び出しを使用してデータを取得できます。これは、メソッドを呼び出すオブジェクトに対してプロパティ データが設定されていると想定しているためです。クラス メソッドを使用する場合、メソッドの特定のインスタンスを操作していないため、self.data を呼び出すことはできません。
簡単に言うと、クラス メソッドは、クラスのインスタンスの特定のプロパティにアクセスする必要のない、クラスに関連する単純な関数と考えることができます。これは、インスタンス (クラスの割り当てられたオブジェクト) に関連付けられたプロパティが正しく機能する必要があるためです。
+
クラスメソッドを-
表し、インスタンスメソッドを表します