objc/runtime.h 相关
Objecitve-C的重要特性是Runtime(运行时),在Interacting with the Runtime(交互运行)中,运行时函数部分,苹果给出了/usr/lib/libobjc.A.dylib库,这个共享库提供支持动态属性的objective - c语言,通过其接口,可以用于开发将其他语言运行于Objective-C上的中间层(桥接层),库里的函数定义为纯C语言。
例如:class_getName
- class_getName
- Returns the name of a class.
- const char * class_getName(Class cls)
- Parameters
- cls
- A class object.
- Return Value
- The name of the class, or the empty string if cls is Nil.
- Declared In
- runtime.h
这里我们要用库里的函数,干个“坏事”,查看苹果SDK的私有方法。
第一步:导入头文件
- #import <objc/runtime.h>
第二步:添加下列代码
**************实用************
- NSString *className = NSStringFromClass([UIView class]);
- const char *cClassName = [className UTF8String];
- id theClass = objc_getClass(cClassName);
- unsigned int outCount;
- Method *m = class_copyMethodList(theClass,&outCount);
- NSLog(@"%d",outCount);
- for (int i = 0; i<outCount; i++) {
- SEL a = method_getName(*(m+i));
- NSString *sn = NSStringFromSelector(a);
- NSLog(@"%@",sn);
- }
第三步:想看什么类 就把UIView换成你想要的
当然,如果只是查看私有API,会有更简单的方法,可以使用工具class-dump,也可以通过此链接,https://github.com/kennytm/iphone-private-frameworks/tree/master/UIKit/ 查看。
特别注意的是,如果是需要上架的APP,切勿使用私有API,会通不过APP Store的审核。
objc/runtime.h 相关的更多相关文章
- objc/runtime.h 查看私有api
objc/runtime.h 相关 Objecitve-C的重要特性是Runtime(运行时),在Interacting with the Runtime(交互运行)中,运行时函数部分,苹果给出了/u ...
- Runtime的相关知识
Runtime是近年来面试遇到的一个高频方向,也是我们平时开发中或多或少接触的一个领域,那么什么是runtime呢?它又可以用来做什么呢? 什么是Runtime?平时项目中有用过么? OC是一门动态性 ...
- iOS Objc Runtime 教程+实例Demo
样例Demo 欢迎给我star!我会继续分享的. 概述 Objc Runtime使得C具有了面向对象能力,在程序执行时创建,检查.改动类.对象和它们的方法.Runtime是C和汇编编写的,这里http ...
- error: /usr/include/objc/objc-class.h: No such file or directory
When i use the example of ShareKit package,i have come across this error:"error: /usr/include/o ...
- ios专题 - objc runtime 动态增加属性
objective-c中,有类别可以在不修改源码的基础上增加方法:近排在看别人的开源代码时,发现还可以动态增加属性.而且是在运行时,太牛B了. 使用运行时库,必须要先引入 objc/runtime.h ...
- objc runtime 动态增加属性
objective-c中,有类别可以在不修改源码的基础上增加方法:近排在看别人的开源代码时,发现还可以动态增加属性.而且是在运行时,太牛B了. 使用运行时库,必须要先引入 objc/runtime.h ...
- #import </usr/include/objc/objc-class.h> not such file or directory问题的解决方法
近期在使用一些开源的demo,打开后出现这个错误,然后能够把 #import </usr/include/objc/objc-class.h> 改动为以下 #import <objc ...
- ios runtime的相关知识
一.iOS runtime原理 对于runtime机制,在网上找到的资料大概就是怎么去用这些东西,以及查看runtime.h头文件中的实现,当然这确实是一种很好的学习方法,但是,其实我们还是不会知道r ...
- 使用objc runtime实现iOS绿色的懒加载
使用objc runtime实现懒加载 地址:AutoPropertyCocoa 本文所指懒加载形式如下 - (id)lazyloadProperty{ if(_lazyloadProperty == ...
随机推荐
- Hive相关随笔
1).Hive中Select Top N的实现 Hive中使用 Order by + Limit 可以很容易地实现Select Top N. 但是在Hive中Order by只能使用1个Reduce, ...
- Android 7.1 快捷方式 Shortcuts
转载请注明出处:王亟亟的大牛之路 前些天就看到相关内容了,但是最近吸毒比较深(wow),所以没有紧跟潮流,今天补一篇. 先安利:https://github.com/ddwhan0123/Useful ...
- LeetCode——Find Largest Value in Each Tree Row
Question You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 ...
- 整数分解为若干项之和 - PAT
深度搜索,一开始没有想到,说明基本功还是不够啊,加油 //======================================================================= ...
- linux主机之间无密钥ssh访问
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id-rsa.pub root@10.0.0.109 # 实现和109互通 vim /etc/hosts DNS ...
- 51Nod 1521 一维战舰
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1521 思路:先计算出一开始最多能放多少艘战舰,然后每次输入一个点后,找到 ...
- quartz动态job工具类 serviceh注入问题
package com.heyi.yanglao.common.job.util; import cn.hutool.core.date.DateUtil; import lombok.extern. ...
- Linux安装jdk、删除Open jdk
1.将jdk解压安装完成后,在bin目录下查看当前jdk的版本号 命令: ./java -version 2.编辑修改配置 1. 修改profile文件 进入命令: vi /etc/profil ...
- TestNG,timeOut
这篇先来介绍@Test注释下的一个属性-timeOut.字面意思就是超时判断,详细点说.如果哪个测试方法需要监听执行的时间,那么就可以考虑采用timeOut属性.例如,实际的接口测试中,加入登录接口时 ...
- ubuntu18.04里更新系统源和pip源
一.修改ubuntu系统源 我的ubuntu系统是在清华的开源网站上下的,所以我还以为他应该就帮我弄好源了,可是没想到下载的还是非常慢,看到下载的时候网址前还有个us,就知道不是国内源了.所以这里我们 ...