class_copyIvarList和class_copyMethodList
2015-11-02 12:20
204 查看
直接看代码吧
Dog.h
#import <Foundation/Foundation.h>
@interface Dog : NSObject
@property(nonatomic, strong) NSString * dogName;
@property(nonatomic, assign) NSInteger dogAge;
@end
Dog.m
#import "Dog.h"
@interface Dog ()
@property(nonatomic, strong) NSString * dogSex;
@end
@implementation Dog
- (instancetype)init
{
self = [super init];
if (self) {
self.dogName = @"dahuang";
self.dogAge = 2;
}
return self;
}
- (void) printDogName
{
NSLog(@"dogName");
}
@end
测试代码:
#import "ViewController.h"
#import <objc/runtime.h>
#import <objc/message.h>
#import "Person.h"
#import "Dog.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
Dog * dog = [[Dog alloc] init];
unsigned int outCount = 0;
unsigned int outCountMethod = 0;
Ivar * ivars = class_copyIvarList([dog class], &outCount);
Method * methods = class_copyMethodList([dog class], &outCountMethod);
for (int i = 0; i<outCount; i++) {
// 取出i位置对应的成员变量
Ivar ivar = ivars[i];
// 查看成员变量
const char *name = ivar_getName(ivar);
NSLog(@"%s", name);
}
for (int j = 0; j < outCountMethod; j++) {
Method method = methods[j];
SEL methodSEL = method_getName(method);
const char * selName = sel_getName(methodSEL);
if (methodSEL) {
NSLog(@"sel------%s", selName);
}
}
}
输出:
2015-11-02 12:18:07.851 02-runtime[1970:51391] _dogName
2015-11-02 12:18:07.852 02-runtime[1970:51391] _dogAge
2015-11-02 12:18:07.853 02-runtime[1970:51391] _dogSex
2015-11-02 12:18:07.853 02-runtime[1970:51391] sel------setDogName:
2015-11-02 12:18:07.854 02-runtime[1970:51391] sel------setDogAge:
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------printDogName
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogName
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogAge
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------dogSex
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------setDogSex:
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------.cxx_destruct
2015-11-02 12:18:07.857 02-runtime[1970:51391] sel------init
Dog.h
#import <Foundation/Foundation.h>
@interface Dog : NSObject
@property(nonatomic, strong) NSString * dogName;
@property(nonatomic, assign) NSInteger dogAge;
@end
Dog.m
#import "Dog.h"
@interface Dog ()
@property(nonatomic, strong) NSString * dogSex;
@end
@implementation Dog
- (instancetype)init
{
self = [super init];
if (self) {
self.dogName = @"dahuang";
self.dogAge = 2;
}
return self;
}
- (void) printDogName
{
NSLog(@"dogName");
}
@end
测试代码:
#import "ViewController.h"
#import <objc/runtime.h>
#import <objc/message.h>
#import "Person.h"
#import "Dog.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
Dog * dog = [[Dog alloc] init];
unsigned int outCount = 0;
unsigned int outCountMethod = 0;
Ivar * ivars = class_copyIvarList([dog class], &outCount);
Method * methods = class_copyMethodList([dog class], &outCountMethod);
for (int i = 0; i<outCount; i++) {
// 取出i位置对应的成员变量
Ivar ivar = ivars[i];
// 查看成员变量
const char *name = ivar_getName(ivar);
NSLog(@"%s", name);
}
for (int j = 0; j < outCountMethod; j++) {
Method method = methods[j];
SEL methodSEL = method_getName(method);
const char * selName = sel_getName(methodSEL);
if (methodSEL) {
NSLog(@"sel------%s", selName);
}
}
}
输出:
2015-11-02 12:18:07.851 02-runtime[1970:51391] _dogName
2015-11-02 12:18:07.852 02-runtime[1970:51391] _dogAge
2015-11-02 12:18:07.853 02-runtime[1970:51391] _dogSex
2015-11-02 12:18:07.853 02-runtime[1970:51391] sel------setDogName:
2015-11-02 12:18:07.854 02-runtime[1970:51391] sel------setDogAge:
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------printDogName
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogName
2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogAge
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------dogSex
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------setDogSex:
2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------.cxx_destruct
2015-11-02 12:18:07.857 02-runtime[1970:51391] sel------init
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Java Runtime Environment 5.0 Update 12 下载
- php set_magic_quotes_runtime() 函数过时解决方法
- Asp.Net 程序错误Runtime Error原因与解决
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- System 类 和 Runtime 类的常用用法介绍
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件