は、あなたが興味を持っている2つの方法がありますことをテストしていますしかし、サブクラスではない。例えば、NSManagedObject
というサブクラスがobjectClassと呼ばれているとします。
if([self.objectClass isKindOfClass:[NSManagedObject class]]) {
// This will return YES
}
else if ([self.objectClass isMemberOfClass:[NSManagedObject class]]) {
// This will return NO
}
最初の文がYES返す(または真の、または1)オブジェクトクラスは、NSManagedObjectのサブクラスであるためです。 2番目のステートメントはNO(またはFALSEまたは0)を返します。サブクラスの場合はクラス自体ではないためです。
UPDATE:
if ([self.class isKindOfClass:self.class])
falseを返します:次のコード行はので、私はこの説明が間違っていると述べて以下のコメント、に光をもたらすために、この答えを更新したいです。これは正しいです、それはfalseを返します。しかし、この例は間違っています。 NSObjectから継承するすべてのクラスもNSObjectプロトコルに準拠しています。このプロトコル内には、class
というメソッドがあります。このメソッドは「受信者のクラスのクラスオブジェクトを返します」。この場合、self.classは、自分自身のクラスオブジェクトを返します。しかし、isKindOfClass:
の文書から -
は、受信機は、所与のクラスのインスタンス またはそのクラスから継承するクラスのインスタンスであるかどうかを示すブール値を返します。
インスタンスクラスのにではなく、クラス自体に送信されることを意図されているので、したがって、(クラスである)self.classためにこのメッセージを送信すると、falseを返します。
あなたは
if([self isKindOfClass:self.class])
に例を変更する場合は、YES(または真、または1)を取得します。
ここで私の答えは、self.objectClassがインスタンスというobjectClassへのアクセッサであると仮定します。確かに、それはクラスのインスタンスのひどい名前ですが、質問は "クラスのインスタンスに名前を付ける方法"ではありませんでした。
あなたは '-isKindOfClass:'メソッドを探しているかもしれません:https://developer.apple。com/library/mac /#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html –
私の答えは分かりやすいように、objectClassとは何ですか?それは実際のクラスの名前ですか?クラスのインスタンス?セマンティクスでは、最初に大文字で名前を付け、小文字でインスタンスを作成することをお勧めしません。したがって、MyClassはクラスであり、instanceOfMyClassはMyClassのインスタンスです。 – jmstone617
クラス_objectClassは、RestKitがオブジェクトインスタンスをインスタンス化するために使用している何らかのクラスオブジェクト参照です。 –