• 概念
  • 例子

一、概念

反射:根据字符串实例话对象或者调用方法

  1. //
  2. // main.m
  3. // 反射机制
  4. //
  5. // Created by apple on 14-3-28.
  6. // Copyright (c) 2014年 apple. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10. #import "Person.h"
  11.  
  12. #import "Student.h"
  13. #import "Person.h"
  14.  
  15. #pragma mark NSObject常用方法
  16. void test() {
  17. Student *stu = [[[Student alloc] init] autorelease];
  18.  
  19. // isKindOfClass判断对象是否属于某个类 或者 子类
  20. if ( [stu isKindOfClass:[Person class]] ) {
  21. // NSLog(@"stu属于Person或者继承自Person");
  22. }
  23.  
  24. // isMemberOfClass判断对象是否属于某个类(不包括子类)
  25. BOOL result = [stu isMemberOfClass:[Student class]];
  26. // NSLog(@"%i", result);
  27.  
  28. // 直接调用
  29. // [stu test];
  30.  
  31. // 间接调用
  32. [stu performSelector:@selector(test)];
  33. // [stu performSelector:@selector(test2:) withObject:@"abc"];
  34. // 延迟2秒后调用test2:方法
  35. [stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:];
  36. }
  37.  
  38. //类的反射机制
  39. void test1()
  40. {
  41. NSString *str = @"Person";
  42. Class class = NSClassFromString(str);
  43. Person *person = [[[class alloc] init] autorelease];
  44.  
  45. NSLog(@"%@", person);
  46.  
  47. NSString *str1 = NSStringFromClass([person class]);
  48.  
  49. NSLog(@"%@", str1);
  50. }
  51.  
  52. //方法的反射机制
  53. void test2()
  54. {
  55. Person *person = [[[Person alloc] init] autorelease];
  56.  
  57. NSString *str = @"test:";
  58.  
  59. SEL sel = NSSelectorFromString(str);
  60. [person performSelector:sel withObject:@"name"];
  61.  
  62. NSString *str1 = NSStringFromSelector(sel);
  63.  
  64. NSLog(@"%@",str1);
  65.  
  66. }
  67. int main(int argc, const char * argv[])
  68. {
  69.  
  70. @autoreleasepool {
  71.  
  72. test2();
  73.  
  74. }
  75. return ;
  76. }

foundation框架之反射机制的更多相关文章

  1. 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件

    反射: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性 Java反射机制主要提供下面几种用途: 1•在运行时判断 ...

  2. 深入浅出学习hibernate框架(三):java的反射机制

    上篇博客写到了JDBC的基本操作,今天准备写一篇关于JAVA反射机制的文章,因为java的反射机制和上一篇JDBC都是Hibernate框架的基本要素.在Hibernate的运行机制中,这两块的内容正 ...

  3. C++反射机制:可变参数模板实现C++反射(使用C++11的新特性--可变模版参数,只根据类的名字(字符串)创建类的实例。在Nebula高性能网络框架中大量应用)

    1. 概要   本文描述一个通过C++可变参数模板实现C++反射机制的方法.该方法非常实用,在Nebula高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能.Nebula框架在码云的仓库地 ...

  4. DirectX11--深入理解Effects11、使用着色器反射机制(Shader Reflection)实现一个复杂Effects框架

    前言 如果之前你是跟随本教程系列学习的话,应该能够初步了解Effects11(现FX11)的实现机制,并且可以编写一个简易的特效管理框架,但是随着特效种类的增多,要管理的着色器.资源等也随之变多.如果 ...

  5. 读懂框架设计的灵魂—Java反射机制

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 CS-Wiki(Gitee 官 ...

  6. iOS开发系列—Objective-C之Foundation框架

    概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...

  7. iOS 开发--Objective-C 反射机制

    了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类.这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法.当然,本篇文章中讲到的反射方法,就在NS ...

  8. iOS Foundation 框架基类

    iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...

  9. OC学习9——反射机制

    1.OC提供了3种编程方式与运行环境进行交互: 直接通过OC的源代码:这是最常见的方式,开发人员只是编写OC源代码,而运行环境负责在后台工作. 通过NSObject类中定义的方法进行动态编程:因为绝大 ...

随机推荐

  1. TcxDBTreeList导出EXCEL

    function ExportExcel(tree: TcxDBTreeList;  const fileName: string = '1.xls'): Boolean;var  sd: TSave ...

  2. unigui MessageDlg方法调用例子

    procedure TfrmEmployee.btnDeleteClick(Sender: TObject);var aBool: Boolean;begin inherited; MessageDl ...

  3. 关于datatable的一些操作以及使用adapter对数据的操作

    private void updateToolStripMenuItem_Click(object sender, EventArgs e) {//将数据更新回数据库 //获取源数据 DataTabl ...

  4. Delphi中GUID相等检查中经典指针应用

    type PGUID = ^TGUID; TGUID = packed record D1: LongWord; D2: Word; D3: Word; D4: array[0..7] of Byte ...

  5. JDBC 常用驱动类及url格式

    1. oracle <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</ ...

  6. thinkphp框架 查询语言

    thinkphp框架 查询语言 EQ     等于        (=) NEQ  不等于      (!=) GT     大于       (>) EGT   大于等于 (>=) LT ...

  7. android进度条的使用

    // 导入按钮事件  btnsearch.setOnClickListener(new View.OnClickListener() {      @Override   public void on ...

  8. VM VirtualBox 上安装 CentOs6.4(详细)

    在网上下载:CentOS-6.4-i386-bin-DVD1.iso镜像. 这是我在VBox上安装CentOs6.4的过程: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12 ...

  9. 【转】BitmapFactory.Options

    BitmapFactory.Options这个类的信息:http://developer.android.com/reference/android/graphics/BitmapFactory.Op ...

  10. js 数组去重 的5种方法

    一万数组,4个重复项,先贴上成绩. 1.3毫秒 2.115毫秒 3.71毫秒 4.6毫秒 1.哈希表 2.JQuery (最快的方法是用JQuery 这句话是截图带的... 实际上Jq是最慢的) 3. ...