Aby sprawdzić, czy obiekt jest instancją klasy a:
[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.
lub
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
Aby uzyskać nazwę klasy obiektu, możesz użyć NSStringFromClass
funkcji:
NSString *className = NSStringFromClass([yourObject class]);
lub funkcja c z interfejsu API w czasie wykonywania celu-c:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
EDYCJA: W Swift
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
class_getName
zNSStringFromClass
? Jeśli nie ma, odpowiedź należy dostosować.Możesz także użyć
na dowolnym obiekcie NSObject
źródło
Co oznacza o isKindOfClass w dokumentacji Apple
Zachowaj ostrożność podczas korzystania z tej metody na obiektach reprezentowanych przez klaster klas. Ze względu na naturę klastrów klas odzyskany obiekt może nie zawsze być zgodny z oczekiwaniami. W przypadku wywołania metody zwracającej klaster klas dokładny typ zwracany przez metodę jest najlepszym wskaźnikiem tego, co można zrobić z tym obiektem. Na przykład, jeśli metoda zwraca wskaźnik do obiektu NSArray, nie należy używać tej metody do sprawdzania, czy tablica jest modyfikowalna, jak pokazano w poniższym kodzie:
Jeśli użyjesz takich konstrukcji w swoim kodzie, możesz pomyśleć, że można modyfikować obiekt, który w rzeczywistości nie powinien być modyfikowany. Może to spowodować problemy z innym kodem, który oczekiwałby, że obiekt pozostanie niezmieniony.
źródło
-isKindOfClass:
i-isMemberOfClass:
nie powinny być wykorzystywane do identyfikacji obiektów w ramach klastra klasy.Jeśli chcesz sprawdzić konkretną klasę, możesz użyć
źródło
jeśli chcesz uzyskać nazwę klasy, po prostu zadzwoń:
źródło
Możesz także sprawdzić czas działania. Umieść jeden punkt przerwania w kodzie i zapisz w konsoli (lldb)
Lubię to..
źródło