【Object-C】判断指针类型,isKindOfxxx

判断指针变量实际指向的对象可以是否为某个类、某个子类的实例,如下方法:

-(Bool)isKindOfClass:className    判断是否为对象是否为ClassName或其子类的实例
-(Bool)isSubclassOfClass:ClassName  判断是否为ClassName的子类实例
-(Bool)isMemberOfClass: ClassName  判断对象是否属于某个子类
//
//  main.m
//  强制类型转换
//
//  Created by mac on 14-11-29.
//  Copyright (c) 2014 mac. All rights reserved.
//

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
   
 @autoreleasepool {
        // insert code here...
       // 声明hello时使用NSObject类,则hello的编译时类型是NSObject
       
 // NSObject是所有类的父类 , hello变量的实际类型是NSString
       
 NSObject* hello = @"Hello";
       
 // 使用isKindOfClass判断该变量所指的对象是否为指定类、及其子类的实例
        NSLog(@"字符串是否是NSObject类的实例:%d", ([hello isKindOfClass:[NSObject  class]]));
      // 返回true
        NSLog(@"字符串是否是NSString类的实例:%d", ([hello isKindOfClass:[NSString class]]));
        // 返回false
        NSLog(@"字符串是否是NSDate类的实例:%d", ([hello isKindOfClass:[NSDate class]]));
        NSString* a = @"Hello";
       
 // 返回false
        NSLog(@"a是否是NSDate类的实例:%d" , ([a isKindOfClass:[NSDate class]]));
   }
   
 return 0;
}

===>>
2014-11-29 15:36:21.445 强制类型转换[1155:303] 字符串是否是NSObject类的实例:1
2014-11-29 15:36:21.445
 强制类型转换[1155:303] 字符串是否是NSString类的实例:1
2014-11-29 15:36:21.445
 强制类型转换[1155:303] 字符串是否是NSDate类的实例:0
2014-11-29 15:36:21.446
 强制类型转换[1155:303] a是否是NSDate类的实例:0
Program ended with exit code: 0

posted @ 2014-11-30 11:44  shujucn  阅读(476)  评论(0编辑  收藏  举报