C,我如何测试对象类型?

我需要测试对象是NSString类型还是UIImageView类型。 我怎样才能做到这一点? 是否有某种类型的“isoftype”方法?


如果你的对象是myObject ,并且你想测试它是否是NSString ,那么代码就是:

[myObject isKindOfClass:[NSString class]]

同样,如果你想为一个UIImageView测试myObject

[myObject isKindOfClass:[UIImageView class]]

你可能会使用

- (BOOL)isKindOfClass:(Class)aClass

这是NSObject一种方法。

有关更多信息,请查看NSObject文档。

这是你如何使用这个。

BOOL test = [self isKindOfClass:[SomeClass class]];

你也可以尝试做这样的事情

for(id element in myArray)
{
    NSLog(@"=======================================");
    NSLog(@"Is of type: %@", [element className]);
    NSLog(@"Is of type NSString?: %@", ([[element className] isMemberOfClass:[NSString class]])? @"Yes" : @"No");
    NSLog(@"Is a kind of NSString: %@", ([[element classForCoder] isSubclassOfClass:[NSString class]])? @"Yes" : @"No");    
}

当你想在superClass和继承的类之间有所不同时,你可以使用:

if([myTestClass class] == [myInheritedClass class]){
   NSLog(@"I'm the inheritedClass);
} 
if([myTestClass class] == [mySuperClass class]){
   NSLog(@"I'm the superClass);
} 

在这种情况下使用- (BOOL)isKindOfClass:(Class)aClass- (BOOL)isKindOfClass:(Class)aClass都会导致TRUE,因为inheritedClass也是一种superClass。

链接地址: http://www.djcxy.com/p/64817.html

上一篇: C, how do I test the object type?

下一篇: Compound key relationship with fuelphp orm