Foundation NSObject常用方法 类名方法名和字符串之间相互转换



//
//  main.m
//  NSObject常用方法
//
//  Created by LiuWei on 15/4/19.
//  Copyright (c) 2015年 LiuWei. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"

// NSObject常用方法
void methos();

// 反射
void reflect();

int main()
{
    @autoreleasepool
    {
        // methos();
        reflect();
        
    }
    return 0;
}


#pragma mark - NSObject常用方法
void methos()
{
    @autoreleasepool
    {
        id stu = [[Student alloc]init];
        
        // 判断对象是否属于指定的类型或其子类型  是返回 YES  不是返回 NO
        if ([stu isKindOfClass:[Person class]])
        {
            NSLog(@"stu 是 Person 类 类型");
        }
        else
        {
            NSLog(@"stu 不是 Person 类 类型");
        }
        
        // 判断对象是否是当前类的一个实例, 是返回 YES, 子类或其它类返回 NO
        if([stu isMemberOfClass:[Person class]])
        {
            NSLog(@"stu 是 Person类的一个实例");
        }
        else
        {
            NSLog(@"stu 不是 Person类的一个实例");
        }
        
        // 判断是否遵从了指定协议
        if([stu conformsToProtocol:@protocol(NSObject)])
        {
            NSLog(@"yes");
        }
        else
        {
            NSLog(@"no");
        }
        
        // 判断是否实现了指定方法
        if([stu respondsToSelector:@selector(func)])
        {
            [stu func];
        }
        
        // 间接调用方法
        [stu performSelector:@selector(show)];
        [stu performSelector:@selector(showNumber:) withObject:@22];
        [stu performSelector:@selector(showNumber:) withObject:@"hello" afterDelay:2];
    }
}


#pragma 反射
void reflect()
{
    //  从字符串中获取类名创建对象
    NSString *str = @"Person";
    Class type = NSClassFromString(str);
    
    id lilwei = [[type alloc]init];
    NSLog(@"%@", lilwei);
    
    // 把类名 转为字符串
    NSString *myclass = NSStringFromClass([Person class]);
    NSLog(@"%@", myclass);
    
    
    // 方法的反射
    NSString *method = @"show";
    Student *stu = [[Student alloc]init];
    [stu performSelector: NSSelectorFromString(method)];
    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值