iOS运行时工具-cycript】的更多相关文章

cycript是大神saurik开发的一个非常强大的工具,可以让开发者在命令行下和应用交互,在运行时查看和修改应用.它确实可以帮助你破解一些应用,但我觉得这个工具主要还是用来学习其他应用的设计(主要是UI的设计及实现). 这个工具使用了Objective-C和Javascript的混合模式,可以实时的和应用交互甚至修改应用.它的网址请猛戳这里.在官网上可以下载到完整的软件包.使用的方式有两种,一种是在越狱的设备上通过MobileSubstrate加装,这样可以在所有的应用里使用:另一种是通过静态…
cycript是大神saurik开发的一个很强大的工具,能够让开发人员在命令行下和应用交互,在执行时查看和改动应用.它确实能够帮助你破解一些应用,但我认为这个工具主要还是用来学习其它应用的设计(主要是UI的设计及实现). 这个工具使用了Objective-C和Javascript的混合模式,能够实时的和应用交互甚至改动应用.它的网址请猛戳这里.在官网上能够下载到完整的软件包.使用的方式有两种,一种是在越狱的设备上通过MobileSubstrate加装,这样能够在全部的应用里使用:还有一种是通过静…
运行时进行编程,类似Java的反射.运行时编程和Java反射的对比如下:   1.相同点   都可以实现的功能:获取类信息.属性设置获取.类的动态加载(NSClassFromString(@“className”)).方法的动态调用   下面是iOS中涉及到的相关使用方法     类的动态加载:NSClassFromString(@“className”),方法的动态调用:NSSelectorFormString(@”doSonethingMethod:”)     常见的方法:   isKin…
运行时(iOS) 一.什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼.开发中经常用到的底层技术) 二.运行时的作用? 能获得某个类的所有成员变量 能获得某个类的所有属性 能获得某个类的所有方法 交换方法实现 能动态添加一个成员变量 能动态添加一个属性 能动态添加一个方法 三.案例:运行时获取成员变量名称 1.分析 #import <Foundation/Foundation.h> #import "XMGPerson.h" #im…
一个成熟的计算机语言必然有丰富的体系,复杂的容错机制,处理逻辑以及判断逻辑.但这些复杂的逻辑都是围绕一个主线丰富和展开的,所以在学习计算机语言的时候,先掌握核心,然后了解其原理,明白程序语言设计的实质和当时选择这种处理方式的原因是极其必要的,而且也是学习语言的捷径. 所以在学习的过程中,需要把握几个核心 先专注主线,后丰富周边:先宏观了解,后微观精通:多设身处地思考,理解代码设计的原因:理解代码设计的原理和优化. OC中处理方法的业务逻辑和其他语言不同,OC语言是动态语言(动态绑定,动态加载(d…
1 举例  我们实现一个Person类 然后Person 其实是没得对象方法eat:的 下面调用person的eat方法 程序是会奔溃的 那么需要借助运行时动态的添加方法 Person *p = [[Person alloc]init]; [p performSelector:@selector(eat:) withObject:@"鸡腿"]; 在perosn.m文件中进行实现运行时动态添加方法 // // Person.m // 运行时(动态添加方法) // // Created b…
举例 在创建了如下代码 NSString *str=nil; NSURL *url =[NSURL URLWithString:str]; NSLog(@"%@",url); 但是想使用自己的方法并对传入的字符串做为空判断 举例 自己写了一个方法 +(instancetype)SJUrlWithStr:(NSString *)str 替代系统方法 [NSURL URLWithString:] 但是如果项目现在已经进行到了后期 就会涉及到很多界面要导入头文件 并修改使用这个方法 很不方便…
注:本篇文章转自:http://www.jianshu.com/p/adf0d566c887 一.运行时简介 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行.Runtime基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力.在Runtime中,对象可以用C语言中的结构体表示,而方法可以用C函数来实现,另外再加上了一些额外的特性.这些结构体和…
http://blog.csdn.net/meegomeego/article/details/18356169 第一种:runtime.h里的方法 BOOL class_addProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount) #include <objc/runtime.h> #import <Foundation…
需求:ex: 在不同尺寸的iPhone上面显示的字体大小不一样 https://github.com/rentzsch/jrswizzle #import <UIKit/UIKit.h> @interface UILabel (Common) - (void) swizzSetFont: (UIFont *) font; @end #import "UILabel+Common.h" @implementation UILabel (Common) -(void)swizz…
第一种:runtime.h里的方法 BOOL class_addProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount) #include <objc/runtime.h> #import <Foundation/Foundation.h> @interface SomeClass : NSObject { NSStr…
http://blog.csdn.net/totogo2010/article/details/8081253 Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言:也不是开发工具,你可以在命令行上就可以创建Cocoa程序.Cocoa程序可以这么说,它是由一些对象组成,而这些对象的类…
概述: 为什么 crash log 内 Exception Backtrace 部分的地址(stack address)不能从 dsym 文件中查出对应的代码? 因为 ASLR(Address space layout randomization),因为 ASLR 引入了一个 slide (偏移) . symbol address = stack address - slide; slide 可以在运行时 由 API 获取到 dyld_get_image_vmaddr_slide() 也可以根据…
该BLOG内容是之前在部门组织讨论运行时问题时自己写的PPT内容,内容以点带面,主要是方便以后自己回顾查看. 大纲包括:1.运行时问题分类 2.服务器自带工具 3.其他工具 4.例子 5.实际情况 运行时问题分类-软件角度:1.内存泄漏,对象未释放 2.线程阻塞.死锁 3.线程死循环 4.网络IO连接超时时间过长 5.磁盘不可写 ..... 运行时问题分类-硬件角度:1.内存占用高 2.CPU占用高 3.网络无反应 4.硬盘空间满 .... Linux指令:1.top, top -Hp pid…
Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars) Objective-C Associated Objects Method Swizzling 总结 引言 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量…
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木”或者“偷天换日”. 用途 介绍某种技术的用途,最简单的方式就是抛出一些应用场景来引出这种技术的必要性.因此,这里我举个例子如下. 假设工程中有很多ViewController,我需要你统计每个页面间跳转的次数.要求:对原工程的改动越少越好. 针对以上需求,你可能会立马想出以下两种方案: 方案一:…
今天引入webtrends 这个库,结果一直运行时找不到函数,纳闷了一下午! 后来发现,是other flag没有设置对,对于那些包含category用来扩展ios原始类型的库,链接的时候需要特别的链接选项: 我先参看了如下的链接,感谢原作者! http://blog.csdn.net/xiaowenwen1010/article/details/40782971 读完原文后,我再总结一下: 当引入的第三方库使用category的方法扩展了ios的基本类时,如果想使用这个库的category中的…
使用运行时获取系统的属性:使用自己的手势修改系统自带的手势 有的时候我需要实现一个功能,但是没有想到很好的方法或者想到了方法只是那个方法实现起来太麻烦,一或者确实为了装逼,我们就会想到iOS开发中最牛逼的技术运行时(Runtime) 关于运行时这里就不多说了,请查看笔者之前搬过来了精选文章,这里主要是怎么在实际开发中使用运行时实现我们想要的功能. 比如,在iOS开发中有这样一个问题,关于导航栏中我们点击一个按钮会跳到对应的子控制器,但是这里问题就来了,我们在对应的字控制器中可以点击对应的back…
最近参加三次面试都有被问到runtime,因为不太懂runtime我就只能支支吾吾的说点零碎.我真的好几次努力想看一看runtime的知识,因为知道理解它对理解OC代码内部变化有一定帮助,不过真心觉得对开发没啥意义和用处,又是纯C的代码,现在开源项目那么多,基本都能参考别人的代码达到自己的目的.不过为了面试,今天硬着头皮稍微学了点,才算明白一点runtime的强大之处,现在大致知道它可以用来归档解档,以及字典转模型等.勉强写写今天的一点收获总结吧,依然很零碎,看官请自便.我发现这篇文章不错,看了…
Android PermissionUtils:运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6 PermissionUtil 经常写Android运行时权限申请代码,每次都是复制过来之后,改一下权限字符串就用,把代码搞得乱糟糟的,于是便有了封装工具类的想法,话不多说,先看怎么用: 工具类及Demo:github 简洁版申请权限 申请一个权限: PermissionUtils.checkAndRequest…
mybatis – MyBatis 3 | 日志 http://www.mybatis.org/mybatis-3/zh/logging.html MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具.它会使用第一个查找得到的工具(按上文列举的顺序查找).如果一个都未找到,日志功能就会被禁用. 不少应用服务器(如 Tomcat 和 WebShpere)的类路径中已经包含 Commons Logging,所以在这种配置环境下的 MyBatis 会把它作为日志工具,记住这点非常重要.这将…
0 导言 本主主要内容包括: 1.概述2.参考3.运行时系统的版本和平台4.和运行时系统的交互5.消息6.动态方法解析7.消息转发8.类型编码9.属性声明 1 概述 Objective-C语言将决定尽可能的从编译和链接时推迟到运行时.只要有可能,Objective-C总是使用动态的方式来解决问题.这意味着Objective-C语言不仅需要一个编译器,同时也需要一个运行时系统来执行编译好的代码.这里的运行时系统扮演的角色类似于 Objective-C语言的操作系统,Objective-C基于该系统…
runtime运行时用法之一 --- 交换类的方法,此处简单写了把系统的UIView的setBackgroundColor的方法换成了自定义的pb_setBackgroundColor 首先创建UIView的分类 在分类中导入头文件#import <objc/runtime.h> 实现load类方法 --- 类被加载运行的时候就会调用 分别获取系统setBackgroundColor方法 和自定义的 pb_setBackgroundColor 方法.然后交换 在AFNetworking中也有应…
一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运行时自己一直很晕.不过还是整理下来,方便以后用. 这里直接创建了一个分类. 头文件代码 // // NSObject+Model.h // Chaos_G // #import <Foundation/Foundation.h> @interface NSObject (Model) // 快速进…
运行时常用 什么是Runtime(前面的文章已经说的很清楚了,这里就简单的介绍一下) 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @selector(doSomething));. OC中一切都被设计成了对象,我们都知道一个类被初始化成一个实例,这个实例是一个对象.实际上一个类本质上也是一个对象,在runtime中用结构体表示. 相关的定义: /// 描述类中的一个方法 ty…
我们在编程过程中,如果使用到了runtime(运行时),我们几乎都是想动态的改变这个类的信息,包括方法,属性,balabala的,并且获得这个类的一些信息,等等,下面我们就来看看怎么通过runtime提供的方法,来达到这些目的1). 获取 这个类的所有属性 .h 文件 @interface RTObj :NSObject @property(nonatomic,copy)NSString*name; @property(nonatomic,copy)NSString*webUrl; @prope…
谈到运行时,相对应的就有编译时: 1).运行时-- 直到程序运行时才去确定一个对象的具体信息,并且可以改变这个类的具体信息,包括它的方法,变量等等: 2).编译时-- 是在程序运行之前,编译的时候,就确定了这个对象的具体信息,并且不可改变 先来说说,运行时,确定一个对象的具体信息的例子 NSString *str = [NSArray arrayWithObject:"]; NSLog(@"%ld",str.length); 这两句 代码,在Xcode里是可以编译成功,不会报…
在某些时候,程序可能需要根据获取的参数来决定调用的方法. 要实现这样的功能,就需要使用到动态运行时方法了. 首先需要定义好接口,以便调用. 然后就是动态调用定义好的方法. 这里有两种方法, 第一种: // 有参数则需要加上冒号 SEL sel = NSSelectorFromString(@"save:"); MyObject obj = [MyObject new]; [obj performSelector:sel withObject:@{":@"one&qu…
在管理员运行的命令提示符中输入sxstrace获得如下帮助: C:\>sxstrace WinSxs Tracing Utility. Usage: SxsTrace [Options] Options: Trace -logfile:FileName [-nostop] Enabling tracing for sxs. Tracing log is saved to FileName. If -nostop is specified, will not prompt to stop trac…
前言:          Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相关的几个要点做了一个小结. 目录: (1)使用class_replaceMethod/class_addMethod函数在运行时对函数进行动态替换或增加新函数 (2)重载forwardingTargetForSelector,将无法处理的selector转发给其他对象 (3)重载resolveIns…