foundation框架之反射机制
- 概念
- 例子
一、概念
反射:根据字符串实例话对象或者调用方法
//
// main.m
// 反射机制
//
// Created by apple on 14-3-28.
// Copyright (c) 2014年 apple. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Person.h" #import "Student.h"
#import "Person.h" #pragma mark NSObject常用方法
void test() {
Student *stu = [[[Student alloc] init] autorelease]; // isKindOfClass判断对象是否属于某个类 或者 子类
if ( [stu isKindOfClass:[Person class]] ) {
// NSLog(@"stu属于Person或者继承自Person");
} // isMemberOfClass判断对象是否属于某个类(不包括子类)
BOOL result = [stu isMemberOfClass:[Student class]];
// NSLog(@"%i", result); // 直接调用
// [stu test]; // 间接调用
[stu performSelector:@selector(test)];
// [stu performSelector:@selector(test2:) withObject:@"abc"];
// 延迟2秒后调用test2:方法
[stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:];
} //类的反射机制
void test1()
{
NSString *str = @"Person";
Class class = NSClassFromString(str);
Person *person = [[[class alloc] init] autorelease]; NSLog(@"%@", person); NSString *str1 = NSStringFromClass([person class]); NSLog(@"%@", str1);
} //方法的反射机制
void test2()
{
Person *person = [[[Person alloc] init] autorelease]; NSString *str = @"test:"; SEL sel = NSSelectorFromString(str);
[person performSelector:sel withObject:@"name"]; NSString *str1 = NSStringFromSelector(sel); NSLog(@"%@",str1); }
int main(int argc, const char * argv[])
{ @autoreleasepool { test2(); }
return ;
}
foundation框架之反射机制的更多相关文章
- 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件
反射: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性 Java反射机制主要提供下面几种用途: 1•在运行时判断 ...
- 深入浅出学习hibernate框架(三):java的反射机制
上篇博客写到了JDBC的基本操作,今天准备写一篇关于JAVA反射机制的文章,因为java的反射机制和上一篇JDBC都是Hibernate框架的基本要素.在Hibernate的运行机制中,这两块的内容正 ...
- C++反射机制:可变参数模板实现C++反射(使用C++11的新特性--可变模版参数,只根据类的名字(字符串)创建类的实例。在Nebula高性能网络框架中大量应用)
1. 概要 本文描述一个通过C++可变参数模板实现C++反射机制的方法.该方法非常实用,在Nebula高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能.Nebula框架在码云的仓库地 ...
- DirectX11--深入理解Effects11、使用着色器反射机制(Shader Reflection)实现一个复杂Effects框架
前言 如果之前你是跟随本教程系列学习的话,应该能够初步了解Effects11(现FX11)的实现机制,并且可以编写一个简易的特效管理框架,但是随着特效种类的增多,要管理的着色器.资源等也随之变多.如果 ...
- 读懂框架设计的灵魂—Java反射机制
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 CS-Wiki(Gitee 官 ...
- iOS开发系列—Objective-C之Foundation框架
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...
- iOS 开发--Objective-C 反射机制
了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类.这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法.当然,本篇文章中讲到的反射方法,就在NS ...
- iOS Foundation 框架基类
iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- OC学习9——反射机制
1.OC提供了3种编程方式与运行环境进行交互: 直接通过OC的源代码:这是最常见的方式,开发人员只是编写OC源代码,而运行环境负责在后台工作. 通过NSObject类中定义的方法进行动态编程:因为绝大 ...
随机推荐
- devexpress皮肤设置
DEV的皮肤管理控件:SkinController: TdxSkinController; 皮肤设置:SkinController.SkinName := appInfo.SkinName; TdxR ...
- rome实现rss订阅与发布
1. 什么是RSS RSS也叫聚合RSS,是在线共享内容的一种简易方式(也叫聚合内容, 简易供稿,Really Simple Syndication(真正简单的聚合 )).通常在时效性比较强的内容上使 ...
- typedef block
给同一种类型的block定义一个别名 typedef int (^MyBlock) (int , int); int main(int argc, const char * argv[]) { @au ...
- Android导入自定义的jar包时出现 E/AndroidRuntime(486): java.lang.NoClassDefFoundError错误
把自定义的jar包放在Android的工程的libs目录下,运行程序,会出现一下错误: 10-10 08:34:06.479: E/dalvikvm(486): Could not find clas ...
- 通过SimpleAction显示一个listview
private void simpleAction1_Execute(object sender, SimpleActionExecuteEventArgs e) { IObjectSpace os ...
- 实用的树形菜单控件tree
jQuery plugin: Treeview 这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview jQuery jstree jsTree ...
- PL/pgSQL学习笔记之六
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3.1. 声明函数参数 传递给函数的参数被用 $1.$2等 ...
- myeclipse、eclipse中项目复制后(可能无法访问)注意事项 .
.myEclipse 复制后修改名称,访问不到项目 这是因为,你只是改了项目的名称,而没有改 下面是解决方法: 方法 1.右击你的项目,选择“properties”,在“type filter tex ...
- 【S4】使用empty()而不是判断size()是否为0
1.二者的作用是一样的,结果也是等价的.就是判断集合是否为空. 2.二者是等价的,为什么强调使用empty,因为empty效率更高. 3.在STL中,对于一般的集合,empty和size都是常数时间. ...
- JavaScript代码优化(下载时间和执行速度优化)
JavaScript代码的速度被分成两部分:下载时间和执行速度. 下载时间 Web浏览器下载的是js源码,因此所有长变量名和注释都回包含在内.这个因素会增加下载时间.1160是一个TCP-IP包中的字 ...