2014-04-27 Xiaosong Gao
Objective-C是一门简单的语言,95%是C语言。只是在语言层面上加了些关键字和语法。真正让Objective-C如此强大的是它的运行时。它很小但却很强大。它的核心是消息分发。 runtime是开源的。可以去下载:http://opensource.apple.com/tarballs/objc4/objc4-437.1.tar.gz。 runtime是由C语言实现的。 runtime的两个版本。 继续阅读 »
2016-04-02 AllanChan
Runtime是什么 Runtime是一个c和汇编写的动态库(感谢Lision的指正),它就像一个小小的系统,将OC和C紧密关联,这个系统主要做两件事 : 1、封装C语言的结构体和函数,让开发者在运行时创建、检查或者修改类、对象和方法等等。 2、传递消息,找出方法的最终执行代码。 继续阅读 »
2015-10-12 Piasy
Android 6.0引入了Runtime Permission模型,一方面用户不必在安装APP时便授予所有权限,另一方面,对于第三方ROM,APP自身也能方便地判断是否有某项权限了。在本文中,我将以读取通讯录为例对运行时权限进行一次全面的测试,完整代码可以在Github下载。 继续阅读 »
2016-10-26 ALEX LIN
更新日志 Method Swizzle(方法调配、方法混合、方法调和、方法混写) 是 Objective-C 运行时的黑魔法之一。我们可以通过 Swizzle 的手段,在运行时对某些方法的实现进行替换,这是 Objective-C 甚至说 Cocoa 开发中最为华丽,同时也是最为危险的技巧之一。Swizzle 使用了 Objective-C 的动态派发,对于 NSObject 的子类是可以直接使用的。 通过此方案,可以为那些『完全不知道其具体实现的』黑盒方法增加日志记录功能,这非常有助于程序调试。然而,次做法只在调试程序时有用。很少有人在调试程序之外的场合用上述『Method Swillze』来永久改动某个类的功能。不能仅仅因为 继续阅读 »
2015-04-22 Eric Wang
JDK:java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) OS:win7 64bit 在日常开发中,经常需要在项目中加载各种资源,包括图片、文本、声音等资源,在本地项目中运行代码可以正确地加载资源,但是当把本地项目打包成Jar包并发布到web项目中之后,即便将各种资源文件一并打包,依然会出现无法正确加载资源的问题。这说明,在你希望打包的项目中加载资源的方式是错误的。那么你或许会问,为什么在单独的项目中 继续阅读 »
2012-12-30 Klaus Ma
In a large cluster, some un-expected long running task hold back the job’s runtime sometimes. And those long running tasks are hard to locate in such a large cluster. Some ideas are shown here to help to locate those long running tasks. One of them will be implemented in the coming released of OGL. 继续阅读 »
2014-08-02 Xiaosong Gao
Cycript:Objective-JavaScript,它懂Objective-C,也懂JavaScript。 我们能够借助Cycript使用Objective-C或者JavaScript,给某个正在运行的进程的Runtime发送消息。 继续阅读 »
2016-07-25 ruki
这个工具是我之前在做ios逆向分析的时候,随手写的一个小工具,虽然现在已经不怎么维护了,不过这里还是拿出来简单介绍下吧。。 当初写这个工具的背景主要是因为要在越狱的ios系统上,做些插件开发,所以要分析一些私有api的调用规则,以及传参情况。 虽然可以通过ida进行静态分析,也可以做到,但是有些需求毕竟还是需要动态分析来的方便,而且那个时候ida的arm f5插件还没流出, 只能通过人工逆向arm来分析,工作量还是挺大的。 因此就萌生了能否动态去追踪ios系统上对oc代码的调用逻辑呢,逼近objc是基于runtime的,总归是有些办法的。。 一开始,我的重点是在objc_msgSend这个接口,毕竟所有oc调用,最后都会路由 继续阅读 »
2016-01-21 Brian Li
注解解析,包含基本语法,注解元素,快捷方式和JDK1.8注解增强的说明 基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 @Target(ElementType.Method) @Retention(RetentionPolicy.RUNTIME) public @interface Test {} 继续阅读 »
2017-05-10 Lauzy
在项目开发中,大部分 Android 开发者都使用过 ButterKnife 这个通过注解简化代码的框架。部分 Android 开发者也使用过 xUtils 这种快速开发的框架。 两者均使用到了注解。在上一篇 Java注解、反射,安卓IOC(一) 中我们知道了注解及反射的用法。本篇会分别介绍下其实现机制。 运行时注解 首先我们自己简单实现类似 xUtils 这种运行时注解框架。 绑定 View 控件 创建注解: ```java @Retention(RetentionPolicy.RUNTIME)//运行时注解 @Target(ElementType.FIELD)//Target为属性 public @interface 继续阅读 »