Para testar se o objeto é uma instância da classe 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.
ou
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
Para obter o nome da classe do objeto, você pode usar a NSStringFromClass
função:
NSString *className = NSStringFromClass([yourObject class]);
ou função c da API de tempo de execução da objetiva-c:
#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
maisNSStringFromClass
? Se não houver, essa resposta deve ser ajustada.Você também pode usar
em qualquer NSObject
fonte
O que significa isKindOfClass na documentação da Apple
Tenha cuidado ao usar esse método em objetos representados por um cluster de classes. Devido à natureza dos clusters de classe, o objeto que você recebe nem sempre pode ser o tipo esperado. Se você chamar um método que retorna um cluster de classes, o tipo exato retornado pelo método é o melhor indicador do que você pode fazer com esse objeto. Por exemplo, se um método retornar um ponteiro para um objeto NSArray, você não deve usar esse método para verificar se a matriz é mutável, conforme mostrado no código a seguir:
Se você usar essas construções em seu código, poderá pensar que é correto modificar um objeto que, na realidade, não deve ser modificado. Isso pode criar problemas para outro código que espera que o objeto permaneça inalterado.
fonte
-isKindOfClass:
&-isMemberOfClass:
não deve ser usado para identificar objetos em um cluster de classes.Se você deseja procurar uma classe específica, pode usar
fonte
se você deseja obter o nome da classe, basta ligar para: -
fonte
Você também pode verificar o tempo de execução. Coloque um ponto de interrupção no código e dentro da gravação do console (lldb)
Como isso..
fonte