IOS Swizzle(hook)

///////////////////////////////////////////////////////////////////////////////////////////////////

#import "NSArray+swizzle.h"

@implementation NSArray (swizzle)

-(id) myLastObject

{

id ret = [self myLastObject];

NSLog(@"-----myLastObject-------");

return ret;

}

@end

////////////////////////////////////////////////////////////

#import "NSArray+swizzle.h"

#import <objc/runtime.h>

Method ori = class_getInstanceMethod([NSArray class], @selector(lastObject));

Method new = class_getInstanceMethod([NSArray class], @selector(myLastObject));

method_exchangeImplementations(ori, new);

NSArray * array = @[@"0",@"1",@"2",@"3"];

NSString * str = [array
lastObject];

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

输出

-----myLastObject-------

str:3

解释:以上代码将lastObject与myLastObject。

所以  [array lastObject]这句话调用的应该是
 myLastObject,而在myLastObject里面调用myLastObject其实就是调用lastObject。

IOS Swizzle(hook)

时间: 2024-10-06 00:30:42

IOS Swizzle(hook)的相关文章

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 在安装Xcode前,我们先了解下Mac下如何卸载U盘!在VM9下,同一时间内,一个物理设备只能由一个系统去独占,无论是物理机还是虚拟机.我们可以了解一下虚拟机加载U盘的规则:    1.在虚拟机中加载U盘时,会自动将U盘从Wind

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相)

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相) 2014-08-18 21:10 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 以下内容比较长,我们努力地图解每一个步骤,没有耐心的观众可以忽略前27步,直接看第28步最终结果.--------------------------------------------------------------- 1.在虚拟机主界

XE6移动开发环境搭建之IOS篇(6):设置Mac OSX的网络。(有图有真相)

XE6移动开发环境搭建之IOS篇(6):设置Mac OSX的网络.(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 我们配置一下MAC的IP,给定一个固定的内网IP,以便我们的XE6能更好地连接它!--------------------------------------------------------------- 1.打开虚拟机,在MAC里,点一下桌面(星空图

XE6移动开发环境搭建之IOS篇(5):解决Windows和虚拟机下Mac OSX的共享问题(有图有真相)

XE6移动开发环境搭建之IOS篇(5):解决Windows和虚拟机下Mac OSX的共享问题(有图有真相) 2014-08-20 20:28 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 在安装XE6 PAServer前,我们先解决Windows和虚拟机下Mac的文件共享问题,由于虚拟机和我们安装的XE6是同一台电脑,所以此问题很好解决.网上相传有很多的共享大法,但是在WIN7这种权限管制得过份的系统下显得相对复杂了,

XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相)

XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相) 2014-08-16 11:44 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 1.创建新的虚拟机--------------------------------------------------------------- 1.创建新的虚拟机. 2.我们自己去决定虚拟机的参数,选择自定义配置,点击'继续'. 3.选择版本:WorkS

XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相)

XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相) 2014-08-15 22:04 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 1.安装英文原版虚拟机--------------------------------------------------------------- 1. 我们先在E盘建2个文件夹: MyVM 和 MyVM_MacOSX,用于存放准备安装的虚拟机文件和虚拟Mac系统文件.(此

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 2014-08-22 21:06 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 在安装PAServer前,我们先配置一下MAC的IP,给定一个固定的内网IP,以便我们的XE6能更好地连接它!------------------------------------------------------------

从零开始学ios开发(八):Autorotation and Autosizing

不好意思,这一篇间隔的时间有点长,最近实在是事情太多,耽搁了,好了,长话短说,下面继续学习ios. 这次学习的内容是Autorotation和Autosizing,Autorotation就是屏幕内容自动旋转,因为iphone有重力感应系统(陀螺仪???),屏幕的内容会随着用户手握iphone的方式(竖着握Portrait.横着握Landscape)而改变,这个相信大家都已经有所体会,Autosizing是指当iphone的屏幕旋转后,屏幕里面控件的大小和位置也会自动改变.好了,下面跟着例子继续

iOS开发(OC)中的命名规范

开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结构也算清晰,因为我一直以来都是代码看的多写的多,但是总结的比较少,知识经常不成体系.以后多花点时间把自己的经验和学习知识加以总结一下吧,这样有利于去指导新人,也更有利于加深自己的知识认知.今天就从代码规范入手总结一下iOS开发中好的编码规范吧.我们在开发中看别人的代码的时候经常会去抱怨至少内心里骂娘