Object-C-Foundation-反射
主要方法和类型
Class 变量名 = [类或者对象 class];
Class 变量名 = [类或者对象 superclass];
Class 变量名 = NSClassFromString(方法名字的字符串);
NSString *变量名 = NSStringFromClass(Class 参数);
NSLog(@"创建的对象为: %@",obj);
Class c = [p class];
// NSLog(@"第一个%@",c);
Teacher *t=[[Teacher alloc]init];
c = [t class];
// NSLog(@"wo shi %@",c);
Student *tom = [[Student alloc]init];
c = [tom class];
// NSLog(@"第二个%@",c);
Student *jack = [[Student alloc]init];
Class j = [jack superclass];
NSLog(@"第三个%@",j);
if ([tom isMemberOfClass:[Person class]]) {
NSLog(@"tom is a person");
}
else{
NSLog(@"tom is not a person");
}
if ([jack isMemberOfClass:[Student class]])
{
NSLog(@"jack is a student");
}
else
{
NSLog(@"jack is not a student");
}
//测试class的反射
Class class = NSClassFromString(@"Student");
id obj = [[class alloc]init];
NSLog(@"创建的对象为: %@",obj);
NSString *className = NSStringFromClass(class);
NSLog(@"类名:%@",className);
//调用方法
//Person *p = [[Person alloc]init];
if ([p respondsToSelector:@selector(speak)]) {
[p performSelector:@selector(speak)];
}
if ([p respondsToSelector:@selector(speak)]) {
NSLog(@"speak");
}
if ([p respondsToSelector:@selector(setAge:)]) {
NSLog(@"setAge");
}
if ([p respondsToSelector:@selector(speakWith:at:)]) {
Person *p2 = [[Person alloc]init];
[p speakWith:p2 at:@"KFC"];
[p performSelector:@selector(speakWith:at:) withObject:p2 withObject:@"中餐厅"];
}
//isSubclassOfClass的使用
BOOL flag = [Person isSubclassOfClass:[Student class]];
if (flag) {
NSLog(@"yes");
}
else{
NSLog(@"no");
}
BOOL flag2 = [Student isSubclassOfClass:[Person class]];
if (flag2) {
NSLog(@"yes");
}
else
{
NSLog(@"no");
}
//判断Person类是否实现了MyProtocol协议
if ([tom conformsToProtocol:@protocol(MyProtocol)]) {
NSLog(@"tom 实现了协议");
}
Object-C-Foundation-反射的更多相关文章
- [CareerCup] 14.5 Object Reflection 对象反射
14.5 Explain what object reflection is in Java and why it is useful. Java中的对象反射机制可以获得Java类和对象的反射信息,并 ...
- Object 反射 List
public static object DeserializeModel<T>(object dataModel) { Type type = typeof(T); Object ent ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- day27_反射
1.反射-概述(掌握) 反射就是在程序运行过程中,通过.class文件动态的获取类的信息(属性,构造,方法),并调用 注意:JAVA不是动态语言,因为动态语言强调在程序运行过程中不仅能获取并调用类里面 ...
- 反射——反射API,使用反射创建数组
反射API Java.lang.Reflect库 ① Class类与Java.lang.Reflect类库一起对反射的概念进行支持. ② java.lang包下: a) Cla ...
- java反射的基础学习代码
java反射的学习,好多东西不太理解,主要分析了constructor,method,field,数组和调用main函数等反射的多个方面小例子. 主要的练习类 package javaAdvanced ...
- Java的反射机制(Reflection)
反射机制 指可以在运动时加载.探知.使用编译期间完全未知的类 程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个已加载的类,都能够获取这个类的属性和方法:对于任意一个对象可以调用它的任意一个 ...
- C#的反射机制
using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...
- 黑马程序员:Java编程_反射技术
=========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性 ...
- java_ _反射
Java语言的反射机制初步学习 首先看下基本概念: (一)在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的.这种动态获取 ...
随机推荐
- C++ Reflection Library
C++ Reflection Library https://www.rttr.orghttps://github.com/rttrorg/rttr
- 基于JAVA语言的selenium总结
目录一.基本语句 1.循环控制(break,continue) 3.字符的替换(replace,repalceFirst,replaceAll,regex) 4.字符串的连接("+" ...
- POJ2431 Expedition 贪心
正解:模拟费用流 解题报告: 先放个传送门鸭,题目大意可以点Descriptions的第二个切换成中文翻译 然后为了方便表述,这里强行改一下题意(问题是一样的只是表述不一样辣,,, 就是说现在在高速公 ...
- Linux中的轻量级进程
在Linux中,轻量级进程可以是进程,也可以是线程.我们所说的线程,在Linux中,其实是轻量级进程之间共享代码段,文件描述符,信号处理,全局变量时: 如果不共享,就是我们所说的进程. 进程是资源管理 ...
- nodejs 学习五 单元测试一
一. chai chai 自身是依赖nodejs的 assert,让检测更加语义化. chai 采用两种模式,TDD和BDD, TDD是类似自然语言方式 BDD是结构主义 chai文旦地址 二.moc ...
- jquery代码修改input的value值,而页面上input框的值没有改变的解决办法
问题描述: 在搜索框中输入一些字符,并且点击搜索框右边的五角星做收藏操作时,打开的弹框中Save Search:后面的input中的值被赋值了外面搜索框的值,但是当此次操作完成之后,再次做同样的操作, ...
- 有关java反射机制 小结
111111111111 Class<?> cls = Class.forName("包名.类名"); Object o = cls.newInstance(); 22 ...
- MySQL深入理解
[存储引擎] InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀. 数据存储在共享表空间,可以通过配置分开. 对主键查询的性能高于其他类型的存储引擎. 内部做了很多优化,从磁盘读 ...
- Py打开pkl文件【转载】
转自:https://blog.csdn.net/u010041824/article/details/78391683 1.打开带有中文的pkl文件或者其他字符的文件不能用默认的ascii格式打开, ...
- 产品设计教程:如何理解 px,dp,dpi, pt,看这一篇就够了
先聊聊熟悉的几个单位 围绕着各种屏幕做设计和开发的人会碰到下面几个单位:in, pt, px, dpi,dip/dp, sp 下面先简单回顾下前四个单位: “in” inches的缩写,英寸.就是屏幕 ...