Foundation框架(15)——NSObject的常用方法、OC中的反射

//
//  main.m
//  Foundation(15)
//
//  Created by Mac on 15-1-24.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import 
   
   
    
    
#import "Student.h"

#pragma mark NSObject的常用方法
void objUse(){

    Student *stu = [[[Student alloc] init] autorelease];

    // isKindOfClass:判断对象是否属于某个类或者这个类的子类
    if ([stu isKindOfClass:[NSObject class]]) {
        NSLog(@"stu是一个NSObject对象或者NSObject子类对象");
    }
    
    // isMemberOfClass判断对象是否属于某个类(不包括子类)
    BOOL result = [stu isMemberOfClass:[NSObject class]];
    NSLog(@"result = %i", result);// 打印结果:0
    
    // 直接调用Student的test方法
    [stu test];
    // 间接调用Student的test方法
    [stu performSelector:@selector(test)];
    // 间接调用Student的test2方法
    [stu performSelector:@selector(test2:) withObject:@"abc"];
    // 延迟2秒后调用test2:方法
    [stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:2];
    
    
}

#pragma mark OC中的反射
void reflect(){
    
    NSString *str = @"Student";
    // 类的反射。字符串变Class
    Class class = NSClassFromString(str);
    
    Student *stu = [[class alloc] init];
    NSLog(@"stu = %@", stu);
    
    // Class变字符串
    NSString *name = NSStringFromClass([Student class]);
    
    
    NSString *method = @"test";
    // 方法的反射。字符串(方法名)变方法
    SEL selector = NSSelectorFromString(method);
    // 执行反射方法
    [stu performSelector:selector];
    
    // 方法变字符串(方法名)
    NSString *selectorName = NSStringFromSelector(selector);
    
    NSLog(@"selectorName = %@", selectorName);
    
    [stu release];

}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
//        objUse();
        reflect();
    }
    return 0;
}

   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值