#import <Foundation/Foundation.h>

@interface CustomClass : NSObject
{
NSString *varTest1;
NSString *varTest2;
NSString *varTest3;
}
@property(nonatomic,strong) NSString *varTest1;
@property(nonatomic,strong) NSString *varTest2;
@property(nonatomic,strong) NSString *varTest3;
@interface CustomOtherClass : NSObject
{
int varTest2;
}
-(void)fun2;

@interface ViewController (){

float myFloat;

CustomClass *allobj;

}

/**

获取一个类所有方法

*/

-(void)getClassAllMethod{

u_int count;

Method *methods = class_copyMethodList([ViewController class], &count);

for (int i = 0; i < count; i++) {

SEL name = method_getName(methods[i]);

NSString *strName = [NSString stringWithCString:sel_getName(name) encoding:NSUTF8StringEncoding];

NSLog(@"strName:%@",strName);

}

}

/**

获取一个类的所有属性

*/

-(void)propertyNameList{

u_int count;

objc_property_t *properties = class_copyPropertyList([UIViewController class], &count);

for (int i = 0; i < count; i++) {

const char* propertyName = property_getName(properties[i]);

NSString *strName = [NSString stringWithCString:propertyName encoding:NSUTF8StringEncoding];

NSLog(@"strName:%@",strName);

}

}

/**

获取全局变量的值

*/

-(void)getInstanceVar{

float myFloatValue;

object_getInstanceVariable(self, "myFloat", (void*)&myFloatValue);

NSLog(@"myFloatValue:%f",myFloatValue);

}

/**

判断某一个类的某一个属性的类型

*/

-(void)getVarType{

CustomClass *obj = [CustomClass new];

Ivar var = class_getInstanceVariable(object_getClass(obj), "varTest1");

const char*typeEdcoding = ivar_getTypeEncoding(var);

NSString *strName = [NSString stringWithCString:typeEdcoding encoding:NSUTF8StringEncoding];

if ([strName hasPrefix:@"@"]) {

NSLog(@"handle class case");

}else if ([strName hasPrefix:@"i"]){

NSLog(@"handle int case");

}else if ([strName hasPrefix:@"f"]){

NSLog(@"handle float case");

}else{

}

}

  

IOS高级开发~Runtime(二)的更多相关文章

  1. IOS 高级开发 runtime(二)

    二.移魂大法 使用runtime还可以交换两个函数.先贴上代码和执行结果. #import <Foundation/Foundation.h> @interface DZLPerson : ...

  2. IOS高级开发 runtime(一)

    一. 简介 IOS 开发中灵活使用runtime 会提高我们的程序性能和开发速度.要想使用runtime,首先要引入系统的头文件. <span style="font-size:18p ...

  3. iOS 高级开发 runtime(三)

    三 .动态添加方法 我们可以通过runtime动态地添加方法.那么到底啥叫动态添加方法呢?动态添加方法就是当我们程序运行时才知道我们应该调用哪个方法.我们首先需要了解这一点,当我们编写完一段代码后,我 ...

  4. (转发)IOS高级开发~Runtime(二)

    一些公用类: @interface ClassCustomClass :NSObject{ NSString *varTest1; NSString *varTest2; NSString *varT ...

  5. (转发)IOS高级开发~Runtime(四)

    用C代替OC: #import <objc/runtime.h> #import <objc/message.h> #import <stdio.h> extern ...

  6. (转发)IOS高级开发~Runtime(三)

    11.系统类的方法实现部分替换 - (void) methodExchange { Method m1 = class_getInstanceMethod([NSStringclass],@selec ...

  7. (转发)IOS高级开发~Runtime(一)

    IOS高级开发-Runtime(一) IOS高级开发-Runtime(二) IOS高级开发-Runtime(三) IOS高级开发-Runtime(四) 一些公用类: @interface Custom ...

  8. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  9. IOS高级开发之多线程(四)NSOperation

    1.什么是NSOperation,NSOperationQueue? NSOperation是一个抽象的基类,表示一个独立的计算单元,可以为子类提供有用且线程安全的建立状态,优先级,依赖和取消等操作. ...

随机推荐

  1. 上传jar包至maven私服

    1.maven环境变量配置(新建系统变量,编辑Path) 2.修改maven的setting文件 2.1 私服的用户配置 2.2 私服镜像配置 2.3 (我也不知道是啥) <profile> ...

  2. Android 系统广播机制

    一.Android应用程序注冊广播接收器(registerReceiver)的过程分析 參考Android应用程序注冊广播接收器(registerReceiver)的过程分析http://blog.c ...

  3. Unity3d中制作异步Loading进度条所遇到的问题

    背景 通常游戏的主场景包括的资源较多,这会导致载入场景的时间较长.为了避免这个问题,能够首先载入Loading场景.然后再通过Loading场景来载入主场景. 由于Loading场景包括的资源较少,所 ...

  4. C#语言循环语句for嵌套

  5. FragmentSharedFabTransition

    https://github.com/lgvalle/FragmentSharedFabTransition

  6. Codeforces Round #262 (Div. 2)460A. Vasya and Socks(简单数学题)

    题目链接:http://codeforces.com/contest/460/problem/A A. Vasya and Socks time limit per test 1 second mem ...

  7. scrollTo(String text) and scrollToExact(String text) method of Android Driver not working

    Using the scrollTo(String text) and scrollToExact(String text) method of Android Driver. However the ...

  8. Mac 上VitrualBox安装CentOS6.5 调整root分区的大小

    安装centOS的时候由于选择了动态调整磁盘大小.所以分配磁盘空间的时候就没多想,直接用的default的8G,以为不够了自己会调整,没想到是个大坑 发现提示空间不足的时候root仅仅有0k了.... ...

  9. Python 002- 爬虫爬取淘宝上耳机的信息

    参照:https://mp.weixin.qq.com/s/gwzym3Za-qQAiEnVP2eYjQ 一般看源码就可以解决问题啦 #-*- coding:utf-8 -*- import re i ...

  10. Spring中的AOP(学习笔记)

    是什么AOP及实现方式 AOP的基本概念 Schema-base AOP Spring AOP API AspectJ