So testen Sie, ob das Objekt eine Instanz der Klasse a ist:
[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of
// given class or an instance of any class that inherits from that class.
oder
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
Um den Klassennamen des Objekts abzurufen, können Sie die folgende NSStringFromClass
Funktion verwenden:
NSString *className = NSStringFromClass([yourObject class]);
oder c-Funktion von Objective-C Runtime API:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
EDIT: In Swift
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
class_getName
gegenüberNSStringFromClass
? Wenn es keine gibt, sollte diese Antwort angepasst werden.Sie können auch verwenden
auf jedem NSObject
quelle
Was bedeutet isKindOfClass in der Apple-Dokumentation ?
Seien Sie vorsichtig, wenn Sie diese Methode für Objekte verwenden, die von einem Klassencluster dargestellt werden. Aufgrund der Art der Klassencluster entspricht das Objekt, das Sie zurückerhalten, möglicherweise nicht immer dem Typ, den Sie erwartet haben. Wenn Sie eine Methode aufrufen, die einen Klassencluster zurückgibt, ist der genaue Typ, den die Methode zurückgibt, der beste Indikator dafür, was Sie mit diesem Objekt tun können. Wenn eine Methode beispielsweise einen Zeiger auf ein NSArray-Objekt zurückgibt, sollten Sie diese Methode nicht verwenden, um festzustellen, ob das Array veränderbar ist, wie im folgenden Code gezeigt:
Wenn Sie solche Konstrukte in Ihrem Code verwenden, denken Sie möglicherweise, dass es in Ordnung ist, ein Objekt zu ändern, das in Wirklichkeit nicht geändert werden sollte. Dies kann dann zu Problemen für anderen Code führen, der erwartet, dass das Objekt unverändert bleibt.
quelle
-isKindOfClass:
&-isMemberOfClass:
nicht zum Identifizieren von Objekten innerhalb eines Klassenclusters verwendet werden sollte.Wenn Sie nach einer bestimmten Klasse suchen möchten, können Sie verwenden
quelle
Wenn Sie den Namen der Klasse erhalten möchten, rufen Sie einfach an: -
quelle
Sie können auch die Laufzeit überprüfen. Setzen Sie einen Haltepunkt in den Code und schreiben Sie in die Konsole (lldb)
So was..
quelle