NSObject和反射】的更多相关文章

NSObject和反射2. commend +R  run id stu=[Student student]; // –>   Student *stu=[Student student]; :也是方法名的一部分 主要是反射:reflect 根据字符串来实例化一个对象 //#pragma mark reflect according to class name void reflect(){ NSString *str=@"Person"; Class class=NSClass…
如何NSObject和反射 NSObject 常用方法 如何判断 某个对象是否属于某个类或子类 -(BOOL)isKindOfClass:(Class)aClass 判断是否为aClass的实例(不包括aClass的子类) -(BOOl)isMemberOfClass:(Class)aClass 判断是否实现了aProtocol协议 -(BOOL)conformToProtocol:(Protocol)aProtocol 判断这个类的对象是否拥有参数提供的方法 +(BOOL)instancesR…
1.判断某个对象是否属于一个类 Student *stu = [[[Student alloc] init] autorelease]; BOOL result= [stu isKindOfClass:[Person class]]; NSLog(@"%i", result); //判断对象是否属于某个类,不包括子类 NSLog(@"%i",[stu isMemberOfClass:[Student class]]); NSLog(@"%i",[…
NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 - (BOOL)isMemberOfClass:(Class)aClass //判断是否为aClass的实例(不包括aClass的子类) - (BOOL)conformsToProtocol:(Protocol)aProtocol //判断对象是否实现了aProtocol协议 + (BOOL)ins…
// 类的反射    NSString *str = @"Person";    Class class = NSClassFromString(str);        Person *person = [[class alloc] init];    NSLog(@"%@", person); // Class变成字符串    NSString *name =  NSStringFromClass([Person class]);        // 方法的反射…
// // PJReflect.m // 新浪微博 // // Created by pj on 14-8-8. // Copyright (c) 2014年 pj. All rights reserved. // #import "PJReflect.h" #import "PJFiled.h" #import <objc/runtime.h> #import <Foundation/NSObjCRuntime.h> @implementa…
objective-c中提供类似JAVA的反射特性,给出基本例子如下: #import <Foundation/Foundation.h> @interface ClassA : NSObject{ int _id1; int _id2; int _id3; } @property int _id1; @property int _id2; @property int _id3; -(void) setId1:(int)id1 andId2:(int)id2 andId3:(int)id3;…
函数 func x(a:Int, b:Int)  {}   func x(a:Int, b:Int) -> Void {}  func x(a:Int, b:Int) ->(Int,Int) {} 外部参数名 func x(width a:Int,height b:Int) -> Int {}  func x(#a:Int,#b:Int) -> Int {} //一般情况下可以不指定外部参数名,直接调用函数,但使用外部参数名,可以显著提高代码可读性: func helloWithN…
一.反射 反射,一般表现在字符串和Class转换,字符串和内部方法转换,字符串和属性的转换(取值和赋值). 二.Objective-C中的反射 OC的反射是基于其Runtime实现的. 以执行某个函数为例,我们知道在OC中执行[Stu doSomething]函数,实质上是发送了一个消息给Runtime,然后Runtime再根据这个Class的字符串名和这个函数的字符串名,去匹配真正相应的方法的地址,然后再执行的.所以中间我们可以利用字符串去动态的检测,甚至动态的修改(之前说到的Method S…
http://www.cr173.com/html/18677_1.html 1.反射获取类属性名和属性类型 unsigned ; objc_property_t *properties = class_copyPropertyList([MyEntity class], &propertyCount); ; i < propertyCount; ++i) { objc_property_t property = properties[i]; const char * name = prop…
NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void)test; @end #import "Person.h" @implementation Person - (void)test { NSLog(@"调用了Person的test方法"); } @end #import "Person.h" @i…
iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值.(注意:对象的类,如果是派生类,就得靠其他方式来实现了,因为得到不该基类的属性.) 本人常用的反射方式,有如下两种: 从一个自定义实体类->自定义实体类从一个NSDictionary->自定义实体类(此方式最最常用,如网络Json数据会组成NSDictionary.sqlite查询数据,可以用第三方组件组成NSDictionary)直接上码,(这里码在NSObject类别中)获取对象所有属性:- (N…
注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [NSNumber numberWithInt:]; // 将int类型的10 包装成一个NSNumber对象. NSLog(@"number=%@", number);//NSNumber类型对象可以当作字符串直接输出. NSMutableArray *array = [NSMutable…
了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类.这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法.当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中. 反射机制涉及到的东西比较多,这篇文章只从OC层面来讲反射机制,不涉及runtime部分,以后会写文章来专门讲runtime的. 获取Class对象 Class对象其实本质上就是一个结构体,这个结构体中的成员变量还是自己,这种设计方式非常像链表的数据结构.…
前一篇文章讲到了OC中的代理模式,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我们使用.那么今天首先来介绍一下Foundation框架中的第一个类NSObject. 在之前介绍了类的相关知识,我们看到我们自定义的类都必须实现NSObject类,这个类内部有很多现有的方法可以供我们使用…
概念 例子 一.概念 反射:根据字符串实例话对象或者调用方法 // // 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 "P…
      我第一次接触Java的时候就觉得整个反射包都很新颖,它使得Java和解释型的脚本语言更接近了,与此同时也拉开了和主流的C和C++的距离.在运行时可以窥视到一个对象的类元数据真的很不可思议,尽管这些可能不会在日常应用编程中经常使用到.从Java转到Objective-C的程序员应该会乐见Objective-C也支持反射.实际上,Objective-C有很多诸如动态改变类定义以及创建一个新类的动态特征.不过很难说这些功能有多大的作用,这也让我觉得Objective-C是一个有些臃肿的语言…
挺简单啥也不说了直接上代码(NSDate和反射) // // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildcat. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #pragma mark -NSDate的练习 void date…
1.OC提供了3种编程方式与运行环境进行交互: 直接通过OC的源代码:这是最常见的方式,开发人员只是编写OC源代码,而运行环境负责在后台工作. 通过NSObject类中定义的方法进行动态编程:因为绝大部分类都是NSObject的子类(NSProxy例外),所以绝大部分对象都继承了NSObject的方法,因此,所有对象都可以调用NSObject的方法来编程.例如NSObject提供了isKindOfClass:(判断指定类及其子类的实例对象).isMemberOfClass:(判断指定类的实例对象…
一. Objective-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : -- 通用包装类 NSValue : NSValue 包装单个 short, int, long, float, char, id, 指针 等数据; -- NSNumber 包装类 : 用于包装 C 语言数据类型; NSNumber 方法 : -- "+ numberWithXxx :" : 将特定类型的值包装成 NSNumber; -- "- initWi…
我们知道对于现如今的动态语言比如ruby而言,反射和元编程以及支持的非常灵活了,你完全可以跳过常规的手段,而利用反射来查询或调用对象的私有方法.而obj-c对反射的支持略显小繁琐,而且在开了ARC后同样出错.就算不开ARC,为啥明明有那个方法却不能调用呢?为啥double变量不让直接转成id呢?蛋疼啊,上代码: #import <Foundation/Foundation.h> @interface A:NSObject{ double i; } @property double i; -(d…
明天要去面试一个公司,今天复习下IOS题目吧 1.说一下OC的反射机制 答:OC的反射机制类似于JAVA的反射机制,这种动态反射机制可以让OC语言更加灵活.这句话是对反射机制的初步认识,具体表现在哪里使得他类似JAVA的反射机制,又如何让OC语言更加的灵活呢?可以通过一些代码去更好的理解.总的来说,OC的反射机制主要有三个用途: 1.获得CLASS 2.检查继承关系 3.动态调用方法 先来说说第一个用途,获得class的具体用法: #import "Person.h" //1.通过字符…
方法一 Persons.json文件 [ { "name": "Chris", "age": 18, "city": "Shanghai", "job": "iOS" }, { "name": "Ada", "age": 16, "city": "Beijing", &…
swift是静态语言,没有在运行时保存类型的结构信息(isa.class). 一.self.Self.Type.typeof extension Collection where Self.Element == UInt8, Self.Index == Int public static func isValueTypeOrSubtype(_ value: Any) -> Bool { return value is Self } static func _transform(dict: [St…
如何在android平台上使用js直接调用Java方法 在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...) 在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直…
该文章属于<简书 — 刘小壮>原创,特此感谢:<简书 — 刘小壮> http://www.jianshu.com/p/5bbde2480680 了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类.这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法.当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中. 反射机制涉及到的东西比较多,这篇文章只从OC层面来讲反射机制,不涉及runtime部分,以后会写文…
在IOS的网络编程中,通常我们需要将一些实体数据保存到NSDictionary,在获得NSDictionary后即可直接使用iOS 5后的NSJSONSerialization类型的dataWithJSONObject方法就可以返回包含JSON字符串的NSData对象了.然后调用ASIHttpRequest. 如果类属性中还包含其他类,或更多的嵌套下怎么办呢,自己来编写会非常复杂,这里我们可以通过反射来编写,基本思路就是通过反射获得属性名称,通过KVC获得值,剩下的就是NSDictionary和…
iOS  反射 学习 和 运用 反射:  通过 类名来获得生成的相应的类的实例 的这种机制  叫 反射 常用的反射方式 把 NSDictionary  转成 自定义 model 自定义 model 转成  NSDictionary (1)第一种 其实很好实现的 ,你可以自己写映射关系 对应 ,也可以使用一些优秀的第三方,比如 MJExtension 等  特别方便 (2)MJExtension 有一个方法  valueKey,  这个 是可以转字典 但是这种方法是有局限的  当这个 比较适合 单…
C++能不能支持Java和ObjC的反射? 要回答这个问题.首先我们要清楚什么是反射.什么是反射? 教科书的解释我就不说了,(^o^)事实上我也记不得.实际开发应用的反射就是在没有某个类型的头文件或者类结构定义的情况下,存取这个类型的对象的成员字段的值.调用这个对象的成员函数(方法). 比方我有定义了一个类型 Class  A,里面有 a,b,c三个字段,有fun()函数. 如今我手里仅仅有一个 void* pA,注意它的类型仅仅是一个void指针,我手里也没有Class的头文件.我要怎么样得到…
1,反射(Reflection) 对于C#.Java开发人员来说,肯定都对反射这个概念相当熟悉.所谓反射就是可以动态获取类型.成员信息,同时在运行时(而非编译时)可以动态调用任意方法.属性等行为的特性. 以Java上的两个知名框架(hibernate和spring)为例.hibernate的属性映射就是通过反射来赋值的,spring的bean的创建就是根据配置的class来反射构建的.   2,Objective-C 的 Runtime在使用ObjC开发时很少强调其反射概念,因为ObjC的Run…