// 类的反射
    NSString *str = @"Person";
    Class class = NSClassFromString(str);
    
    Person *person = [[class alloc] init];
    NSLog(@"%@", person);

// Class变成字符串
    NSString *name =  NSStringFromClass([Person class]);
    
    
// 方法的反射
    NSString *method = @"test";
    SEL selector = NSSelectorFromString(method);
    [person performSelector:selector];
    
// 将SEL转换为字符串
    NSString *selectorName = NSStringFromSelector(selector);

常用方法:

-(BOOL) isKindOfClass: classObj 用来判断一个类是否属于某个类或其子类的类;

-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的,与isKindOfClass方法的区别是:isMemberOfClass方法不能判断其子类子类;

+ (BOOL)isSubclassOfClass:(Class)aClass; 判断对象是否是指定类的子类

-(BOOL) respondsToSelector: selector 用来判断对象中是否实现了某个方法(被封装在一个selector的对象里传递)

+(BOOL) instancesRespondToSelector: selector 用来判断对象中是否实现了某个方法. 和上面一个不同之处在于, 前面这个方法可以用在实例上,而此方法用在类上.
-(id) performSelector: selector
- (id)performSelector:(SEL)aSelector withObject:(id)object;
   - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
调用对象中的方法,一个无参,一个参数,两个参数

- (BOOL)conformsToProtocol:(Protocol *)aProtocol; 判断对象是否实现了某个协议

+ (BOOL)conformsToProtocol:(Protocol *)protocol;同上,区别:静态 和 非静态

- (NSString *)description; 允许一个对象返回一个字符串来描述它的内容;相当于java中的toString方法

- (NSString *)debugDescription;  同上,用于调试

+ (Class)superclass; 返回超类对象
     + (Class)class;返回类对象
     + (void)load; 初始化加载
     + (void)initialize; 初始化对象
     - (id)init; 初始化对象,分配内存

+ (id)new;  分配一个新的接收类实例,并将它发送一个init消息,并返回初始化的对象。

+ (id)allocWithZone:(NSZone *)zone;在内存中为一个对象分配了内存空间并且设置它指向的对象的编译器类定义,返回该实例。

+ (id)alloc;在内存中为一个对象分配了内存空间并且设置它指向的对象的编译器类定义,返回该实例。

- (void)dealloc;应用于类来释放对象实例变量并释放动态内存

转载:http://blog.csdn.net/daiyelang/article/details/18731697

NSObject常用方法和反射的更多相关文章

  1. Object-c 语法 - NSObject常用方法和反射

    NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...

  2. iOS-OC-基础-NSObject常用方法

    Person *person1 = [[Person alloc]init]; Person *person2 = [[Person alloc]init]; // 可以调用类中的私有方法,但是会有一 ...

  3. NSObject常用方法

    类 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } // 初始化加载 + (void)load; / ...

  4. NSObject和反射

    如何NSObject和反射 NSObject 常用方法 如何判断 某个对象是否属于某个类或子类 -(BOOL)isKindOfClass:(Class)aClass 判断是否为aClass的实例(不包 ...

  5. Objective-C:Foundation框架-常用类-NSObject

    NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...

  6. NSNumber、NSValue、NSDate、NSObject

    注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...

  7. foundation框架之反射机制

    概念 例子 一.概念 反射:根据字符串实例话对象或者调用方法 // // main.m // 反射机制 // // Created by apple on 14-3-28. // Copyright ...

  8. 【java提高】---java反射机制

    java反射机制 一.概述 1.什么是反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...

  9. Java反射Reflect的使用详解

    目录 一. 什么是反射 二. 反射的基础Class 2.1 Class类概述 2.2 Class类对象获取的三种方式 三. 反射-构造函数 3.1 getDeclaredConstructor(Cla ...

随机推荐

  1. 《ASP.NET MVC 5 破境之道》:第一境 ASP.Net MVC5项目初探 — 第三节:View层简单改造

    第一境 ASP.Net MVC5项目初探 — 第三节:View层简单改造 MVC默认模板的视觉设计从MVC1到MVC3都没有改变,比较陈旧了:在MVC4中做了升级,好看些,在不同的分辨率下,也能工作得 ...

  2. JAVA 从头开始<六>

    一.静态代码块 静态代码块不需要创建对象才执行,比对象数据优先存在于内存中 二.静态函数 三.单例设计模式 1.饿汉单例模式 缺点:一声明就创建一个对象,没有使用的话就浪费了. 2.懒汉单例模式 1. ...

  3. 使用css保持一定宽高比例

    需求描述:移动端实现横跨页面半圆.(类似问题,实现4x4的正方形网格) 简化问题,我们可以理解为实现一个高度和宽度比为1:2的块. 需要解决问题: 1,高度和宽度按照一定比例. 2,外容器高度和宽度不 ...

  4. A Tool to Clip Images

    using Microsoft.Win32; using System; using System.IO; using System.Text.RegularExpressions; using Sy ...

  5. POST 400 (BAD REQUEST)

    遇到这种错,1,F12打开控制台,2,点击network,找到发送的请求. 3,点击请求,4,看右侧的 Header Preview Response 应该能找到原因. 就拿刚才来说,找了好几个小时原 ...

  6. Java Maven项目的一些补充

    写在前面 在多人开发团队中,规范是非常重要的.To explain it,就像是秦始皇统一货币.度量衡一样,主要的目的是为了降低项目技术架构差异所带来的交流成本,这样开发者就可以尽可能把注意力放在业务 ...

  7. 六:MyBatis学习总结(六)——调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...

  8. RabbitMQ : 几种Exchange 模式

    AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列.生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机.先由Exchange来接收,然后Exchang ...

  9. Hibernate 抛出的 Could not execute JDBC batch update

    异常堆栈 org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at or ...

  10. sql 获取列名

    --查询所有列 select name from syscolumns where id=OBJECT_ID('PTS_ProjectTask') --列转为行 GetColumnJoin 'Proj ...