E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
swizzling
iOS动态运行时runtime
iOS的动态运行时体现在:运行时根据对象isa指针来实现查找属性、方法等消息传递,运行时根据方法名SEL查找方法实现IMP,或进入消息转发流程Method-
Swizzling
,方法名SEL与方法实现IMP
芝麻酱的简书
·
2019-01-18 11:27
iOS 了解isa-
swizzling
(类指针交换)
1、类的结构structobjc_class{Class_NonnullisaOBJC_ISA_AVAILABILITY;#if!__OBJC2__Class_Nullablesuper_classOBJC2_UNAVAILABLE;constchar*_NonnullnameOBJC2_UNAVAILABLE;longversionOBJC2_UNAVAILABLE;longinfoOBJC2_
GabrielPanda
·
2019-01-18 11:12
OC观察者模式之KVO
KVO:KVO是key-valueobserving的缩写KVO是OC对观察者设计模式的又一实现苹果使用了isa混写(isa-
swizzling
)来实现KVO1.KVO常用API#observer是观察者
芝麻酱的简书
·
2019-01-15 16:09
在不同类之间实现Method
Swizzling
首先,获取目标类方法,即当前类交换方法ClassoriginalClass=[TXUGCRecordclass];ClassswizzledClass=[selfclass];SELoriginalSelector=@selector(stopBGM);SELswizzledSelector=@selector(swizzled_stopBGM);MethodoriginalMethod=clas
武_IOS书
·
2019-01-11 14:54
[iOS][OC] 利用 method-
swizzling
或继承多态对SDWebImage的返回请求头进行过滤
背景SDWebImage是著名的iOS的OC第三方库,可以很好地辅助开发者做好网络图片的请求加载和缓存工作,而在一些后台逻辑场景下,存在着局限性,需要开发者去扩展。比如,通过URL请求一张图片,此图片不存在或者图片无权限时,后台接口不是返回错误statusCode,而是会返回一个提示出错的图片,并在返回response的请求头中协议一个错误errorCode字段,SDWebImage成功接收到一张
BudSwift
·
2018-12-01 12:55
浅析Objective-C中的method
swizzling
技术
一、methodswizzling是什么?methodswizzling是一种偷天换日的技术,在不需要改动源代码,也不需要通过继承子类来覆写方法的情况下,改变这个类的某些甚至全部功能。methodswizzling技术通常用于:给已有的方法添加新功能(实现Hook)。methodswizzling本质是运行时对目标方法的替换。二、methodswizzling怎么用?要想通过methodswizz
拳战攻城师
·
2018-11-26 15:43
交换方法Method
Swizzling
[swift]
1.dispatch_once替代方案OC中用来保证代码块只执行一次的dispatch_once在swfit中已经被废弃了,取而代之的是使用staticlet,let本身就带有线程安全性质的.例如单例的实现.finalpublicclassMySingleton{staticletshared=MySingleton()privateinit(){}}但如果我们不想定义常量,需要某个代码块执行一次
Dariel
·
2018-11-16 11:42
【OC底层】KVO原理
Apple使用了isa混写(isa-
swizzling
)来实现KVO。我们可以通过代码去探索一下。
这酸爽!
·
2018-11-02 16:00
Hook之 Method
Swizzling
MethodSwizzling利用了Objective-C的runtime特性,使得我们能动态替换方法的实现,实现hook。runtime从敲下NSlog(@"helloworld!")开始,就不断看到runtime这个词。对于之前没接触过动态语言的学习者来说,runtime听起来陌生又晦涩。Objective-C不同于C语言,它是一门动态语言,这就意味着它将C语言等静态语言在编译和链接时所做的一
弋枝
·
2018-08-31 17:58
Method-
Swizzling
on Swift4
一、前言因为Swift本身对Runtime的支持并不是很到位,尤其是Method-
Swizzling
在OC中非常常用,但是到Swift后发现load方法不见了进而需要用initialize代替,甚至到了
YYYYYY25
·
2018-07-26 15:29
method
swizzling
你应该注意的点
原文地址methodswizzling方法交换是OC运行时特征之一,通过方法交换可以hook方法,在实现一些需求时可以达到事半功倍的效果,但使用不慎同样可能导致难以想象的后果。在使用methodswizzling前都应该理解以下注意点。1.避免交换父类方法如果当前类未实现被交换的方法而父类实现了的情况下,此时父类的实现会被交换,若此父类的多个继承者都在交换时会导致方法被交换多次而混乱,同时当调用父
DandJ
·
2018-07-24 00:00
runtime
objective-c
iOS面试必看
01UI视图事件传递机制UI绘制原理异步绘制原理流式页面的性能优化离屏渲染02OC语言KVOKVC分类关联对象03Runtime对象、类对象、元类对象消息传递机制消息转发流程Method-
Swizzling
04
Rumbles
·
2018-07-11 15:50
Runtime-
Swizzling
方法交换
今天先开个坑(頑張れ)今天就从runtimeswizzling开始吧,
swizzling
方法的主要目的就是hook方法,实现方法的交换,下面的场景为我们交换页面的进入(viewWillAppear)和离开方法
woniu
·
2018-06-12 17:17
Objective-C Method
Swizzling
MethodSwizzling原理MethodSwizzling是Objective-Cruntime的一个体现,他可以动态的添加及替换类的方法。首先,我们来看下Objective-CMethod的数据结构:typedefstructmethod_t*Method;structmethod_t{SELname;constchar*types;IMPimp;structSortBySELAddres
A_sura
·
2018-05-24 16:11
iOS 11 使用两种方法替换(Method
Swizzling
)去掉导航栏返回按钮的文字
方法一:设置BarButtonItem的文本样式为透明颜色,代码如下:[[UIBarButtonItemappearance]setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColorclearColor]}forState:UIControlStateNormal];[[UIBarButtonItemappearance]se
星红
·
2018-05-07 10:40
iOS开发·runtime原理与实践: 方法交换篇(Method
Swizzling
)(iOS“黑魔法”,埋点统计,禁止UI控件连续点击,防奔溃处理)
本文Demo传送门:MethodSwizzlingDemo摘要:编程,只了解原理不行,必须实战才能知道应用场景。本系列尝试阐述runtime相关理论的同时介绍一些实战场景,而本文则是本系列的方法交换篇。本文中,第一节将介绍方法交换及注意点,第二节将总结一下方法交换相关的API,第三节将介绍方法交换几种的实战场景:统计VC加载次数并打印,防止UI控件短时间多次激活事件,防奔溃处理(数组越界问题)。1
陈满iOS
·
2018-05-01 12:45
Method
swizzling
的正确姿势
前言最近重看神经病院Objective-CRuntime出院第三天——如何正确使用Runtime,里面有部分对应到了面试中曾经被问到的使用Methodswizzling的注意事项,着重的学习了下,并用代码实际验证了下。发现之前对Methodswizzling的理解不够深,写的Methodswizzling代码有很大漏洞,对于复杂业务场景考虑有很多不足,记录下自己的收获。一、准备知识OBJC2部分源
学习无底
·
2018-04-30 15:14
iOS开发之 Method
Swizzling
深入浅出
;iOS开发之MethodSwizzling深入浅出只要善用Google,网上有很多关于MethodSwizzling的Demo,在这里我就不打算贴代码了,主要介绍下概念,原理,注意事项等等。开发需求如果产品经理突然说:"在所有页面添加统计功能,也就是用户进入这个页面就统计一次"。我们会想到下面的一些方法:手动添加直接简单粗暴的在每个控制器中加入统计,复制、粘贴、复制、粘贴...上面这种方法太Lo
sq5addc3c45cf19
·
2018-04-23 19:05
iOS
Swift
Objective-C
踩坑 |
swizzling
导致出现 UIImagePickerController Error 4099
错误描述在实现从相册获取照片的功能时,发现调用UIImagePickerController时候报如下错误:UIImagePickerControllerUIViewControllercreateerror:ErrorDomain=NSCocoaErrorDomainCode=4099"Theconnectiontoservicenamedcom.webank.wemoney.apple-ext
TankXie
·
2018-04-17 17:48
浅谈KVO实现原理
KVO在Apple中的API文档如下:Automatickey-valueobservingisimplementedusingatechniquecalledisa-
swizzling
…Whenanobserverisregisteredforanattributeofanobjecttheisapointeroftheobservedobjectismodified
dj_刘小逸
·
2018-04-07 13:54
iOS
基本原理
iOS
YYKit源码探究(四十五) —— NSObject分类之Swap method (
Swizzling
)(四)
版本记录版本号时间V1.02018.03.30前言iOS圈内有几个人大家基本都知道,比如说王巍、唐巧,还有YYKit框架的作者现任职于滴滴的郭曜源-ibireme等。这里有一篇唐巧对他的专访,还有他的GitHub-Yaoyuan和博客,这里贴出来框架YYKit框架。接下来几篇我们就一起来看一下这个框架。感兴趣的可以看上面写的几篇。1.YYKit源码探究(一)——基本概览2.YYKit源码探究(二)
刀客传奇
·
2018-03-30 15:42
Method
swizzling
iOSMethodswizzling原理:1.发生在运行时,主要用于在运行时将两个方法交换。2.代码可以写在任何地方,但是只有在这段交换代码执行完毕之后才起作用。3.也是面向AOP(面向切面编程)的一种实现方式。在OC语言的runtime特性中,调用一个对象的方法就是给这个对象发送消息,是通过查找接收消息对象的方法列表,从方法列表中查找对应的SEL,这个SEL对应一个IMP(一个IMP对应多个SE
韩叨叨
·
2018-03-15 16:42
iOS之运行时机制及方法混写method
swizzling
公司年底要在新年前发一个版本,最近一直很忙,好久没有更新博客了。正好现在新版本开发的差不多了,抽空总结一下。由于最近开发新版本,就避免不了在开发和调试过程中引起崩溃,以及诱发一些之前的bug导致的崩溃。而且项目比较大也很不好排查,正好想起之前研究过的MethodSwizzling,考虑是否能用这个苹果的“黑魔法”解决问题,当然用好这个黑魔法并不局限于解决这些问题......需求就拿我们公司项目来说
cosWriter
·
2018-03-12 11:56
iOS之运行时机制及方法混写method
swizzling
公司年底要在新年前发一个版本,最近一直很忙,好久没有更新博客了。正好现在新版本开发的差不多了,抽空总结一下。由于最近开发新版本,就避免不了在开发和调试过程中引起崩溃,以及诱发一些之前的bug导致的崩溃。而且项目比较大也很不好排查,正好想起之前研究过的MethodSwizzling,考虑是否能用这个苹果的“黑魔法”解决问题,当然用好这个黑魔法并不局限于解决这些问题......需求就拿我们公司项目来说
cosWriter
·
2018-03-12 11:56
前方
Swizzling
事故多发,请小心慎行
Swizzling
作为运行时黑魔法,确实为很多问题的分析和处理提供了便利,本文首先援引他山之石记录
Swizzling
的具体用法和模板,进而通过一组实验分析了其在工程实践中的危险性。
sheepcao
·
2018-02-11 12:20
Objective-C Runtime(三)Method
Swizzling
Runtime3MethodSwizzlingObjective-CRuntime(一)简介对象、类的结构objc_objectobjc_class消息传递(Messaging)objc_methodobjc_msgSendObjective-CRuntime(二)动态方法解析和转发动态方法解析快速消息转发标准消息转发消息转发与多继承消息转发与代理对象Objective-CRuntime(三)Me
liuyanhongwl
·
2017-12-23 22:05
YYKit 源码讲解(2)
foundation里面的部分类添加的category1.NSObject+YYAdd分四个部分1.sendingmessageswithvariableparameters2.Swapmethod(
Swizzling
充满活力的早晨
·
2017-12-15 15:56
Runtime第六篇-Method
Swizzling
MethodSwizzling被称为runtime的黑魔法。swizzle在英文中的本意是“搅和”。MethodSwizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的Method链表中selector对应的imp,来修改方法的实现。具体实现分以下几种情况:1,如果两个selector实现都存在,那么直接调用voidmethod_exchangeIm
lzh_coder
·
2017-12-10 14:20
微博SDK出现莫名的错误
本篇内容涉及到oc中runtime的
swizzling
,方法交换的使用这个是关于微博SDK的内部存在的一个bug。这个bug是这样的,用户在使用App时,如果从后台进入App,会莫名的闪退Crash。
aerial
·
2017-12-06 07:44
Method
Swizzling
如果我们想要在viewWillApper:的方法里做APM可以使用方法调和给UIViewController添加一个Categroy#import"UIViewController+Tracking.h"#import@implementationUIViewController(Tracking)+(void)load{staticdispatch_once_tonceToken;dispatc
SDBridge
·
2017-12-06 05:29
HOOK一个实例方法和类方法
使用MethodSwizzling方法
swizzling
大多时候是在category中的+load方法中使用,也可以创建hook的管理类,放在里面使用。下面例子均在category中进行。
进击的阿三姐
·
2017-09-21 15:40
编程语言
iOS中的 Method_
Swizzling
黑魔法Method_
Swizzling
原理:Method_
Swizzling
是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将MethodSwizzle代码写到任何地方,但是只有在
dullgrass
·
2017-07-07 14:29
Runtime之Method
Swizzling
Runtime又叫运行时,iOS内部的核心之一,底层的为C语言写的API,底层都是基于它来实现的。在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法吗?那就是MethodSwizzling,利用运行时优雅地实现。一、说到MethodSwizzling先提到几个概念:SEL:它是selector在Objc中的表示(Swift中
乱尘
·
2017-07-06 12:13
Texture tiling and
swizzling
from:https://fgiesen.wordpress.com/2011/01/17/texture-tiling-and-
swizzling
/Ifyou’reworkingwithimagesinyourprogram
Damon_X
·
2017-06-27 10:26
graphics
media
Objective-C Runtime 运行时之四:Method
Swizzling
一、引言在本章中,我们来看看runtime对分类与协议的支持。二、基础数据类型CategoryCategory是表示一个指向分类的结构体的指针,其定义如下:typedefstructobjc_category*Category;structobjc_category{char*category_nameOBJC2_UNAVAILABLE;//分类名char*class_nameOBJC2_UNAV
Cheriez
·
2017-06-12 10:31
Method
Swizzling
一、MethodSwizzling原理我们知道OC是动态语言,我们执行一个函数的时候,其实是在发一条消息:[receivermessage],这个过程就是根据message生成selector,然后根据selector寻找指向函数具体实现的指针IMP,然后找到真正的函数执行逻辑。首先,我们看下每一个类的结构体:structobjc_class{structobjc_class*isa;constc
Cheriez
·
2017-06-01 16:27
iOS开发之KVO与KVC解析与实战
一、NSKeyValueCoding(KVC)1.原理运用了一个isa-
swizzling
技术。isa-
swizzling
就是类型混合指针机制。
kidd风
·
2017-03-13 10:55
KVO与KVC原理
手动实现KVO
KVO与KVC实战
手动关闭KVC
IOS开发日志
Runtime之Method
Swizzling
MethodSwizzling参考原文:http://nshipster.com/method-
swizzling
/译文:http://nshipster.cn/method-
swizzling
/Methodswizzlingistheprocessofchangingtheimplementationofanexistingselector.It
Fsn_soul
·
2017-03-06 15:34
浅谈 Method
Swizzling
中遇到的一些问题
如果对Runtime有一定了解的话,一定听说过或者用过这个函数:OBJC_EXPORTvoidmethod_exchangeImplementations(Methodm1,Methodm2)它通常叫做MethodSwizzling,算是objc的“黑魔法”了,作用就是在程序运行期间动态的给两个方法互换实现。最近有用到这个,总结下遇到的一些问题:静态(类)方法和实例方法的交换实现方式一样吗?交换静
ifelseboyxx
·
2017-01-27 22:00
iOS RunTime解析
本文转载自:http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/#Method-
Swizzling
以前看到的好文章,只是每次查找太麻烦
ant_flex
·
2016-12-08 15:39
ios Runtime
本文转载自:http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/#Method-
Swizzling
本文详细整理了Cocoa的Runtime
ant_flex
·
2016-12-01 14:30
Method
Swizzling
MethodSwizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。例如,我们想跟踪在程序中每一个viewcontroller展示给用户的次数:当然,我们可以在每个viewcontroller的viewDidAppear中添加跟踪代码;但是这太过麻烦,需要在每个viewcontroller中写重复
有一种再见叫青春
·
2016-10-27 14:38
KVO基本原理
,KVO机制动态创建一个对象A当前类的子类,并未这个新的子类重写了被观察属性keyPath的setter方法,setter方法随后负责通知观察对象属性的改变状况剖析Apple使用了isa混写(isa-
swizzling
uproject
·
2016-10-19 20:37
【原】iOS动态性(三) Method
Swizzling
以及AOP编程:在运行时进行代码注入
概述今天我们主要讨论iOSruntime中的一种黑色技术,称为MethodSwizzling。字面上理解MethodSwizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木”或者“偷天换日”。用途介绍某种技术的用途,最简单的方式就是抛出一些应用场景来引出这种技术的必要性。因此,这里我举个例子如下。假设工程中有很多ViewController,我需要你统计每个页面间跳转的次数。要
幻世神码
·
2016-09-16 22:24
ISA
Swizzling
《iOS编程实战》
《iOS编程实战》24.6节方法混写和ISA混写的区别KVO是通过ISA混写实现的,这样系统框架就可以在我们的类中注入通知代码,一如把代码注入系统框架。ISA混写是修改某一个特定对象的类,不会影响这个类的其他对象。修改对象的类为自定义的类后,自定义类中的方法就能执行,我们可以在这些方法中添加我们想要的功能。当然,这些方法都存在于修改前的类中,所以自定义类都是修改前类的子类。NSObject+Set
iChanne
·
2016-09-04 00:20
平安好房iOS开发团队技术周报(第十五期)
本期导读:本期周报主要包括如何将设计稿中的像素转化为开发稿中的约束、类方法与实例方法
Swizzling
的区别,以及APP视觉改版高效产出经验分享等内容。
linkoubian
·
2016-08-27 11:42
Objective-C Runtime 运行时之-Method
Swizzling
(下)
方法交换--MethodSwizzling上文介绍了MethodSwizzling简单使用,这里将讲解严谨的写法;问题一:为什么使用+load方法不使用+initial方法答:+load会在类初始加载时调用+initialize会在第一次调用类的类方法或实例方法之前被调用+initialize并发的时候,可能两个方法同时调用;一个方法实现了方法交换,另外一个方法没有进行方法交换;原则上第一个拿到类
静心多想
·
2016-08-15 16:25
Runtime之Method
Swizzling
前一阵子项目要求统计界面,即每进入一个界面就统计一次。想着这不就可以用MethodSwizzling。说起MethodSwizzling,简而言之就是交换方法。说起怎么用它,先说说他的原理吧!既然是交换方法,那是怎么交换的呢?其实MethodSwizzling本质上就是对IMP和SEL进行交换,首先你得知道MethodSwizzling发生在运行时,在运行的时将两个Method进行交换。oc在ru
Marc丶
·
2016-07-21 20:59
Objective-C Runtime之Method
Swizzling
今天准备学习Objective-CRuntime相关知识,看到了MethodSwizzling技术,并找到了介绍该技术的文章:雷纯锋的技术博客。这篇文章贴了一段示例代码并解释了三个问题,但是我的问题不止这三个,所以又四处找了相关资料,并将学到的记录下来。名词解释Class@interfaceNSObject{ClassisaOBJC_ISA_AVAILABILITY;}NSObject的对象都有一
koce_zhao
·
2016-07-09 17:19
(转)Method
Swizzling
和 AOP 实践
转自:http://tech.glowing.com/cn/method-
swizzling
-aop/上一篇介绍了Objective-CMessaging。
反调唱唱
·
2016-07-07 21:52
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他