Objective-C方法Swizzling是否会影响其他过程中的代码?

Objective-C方法Swizzling是否会影响其他过程中的代码?,objective-c,runtime,method-swizzling,Objective C,Runtime,Method Swizzling,Objective-C方法Swizzling是否会影响其他过程中的代码 例如,在我的应用程序中,我在-[NSArray count]上执行swizzling方法。其他进程中的代码是否会受到该方法swizzling的影响 AFAIU方法分辨率应在流程内。但我不确定系统框架中的代码。他们是否在进程之间共享自己的方法分辨率,或者每个进程都有方法分辨率?否。如果有,请考虑安全漏洞 顺便说一句:你到底为什么要喝“伯爵” 一般来说,嘶嘶声是不好的。易碎品,一个维护噩梦,一个被商店拒绝的好方法 你认为其他工艺

Objective-C方法Swizzling是否会影响其他过程中的代码

例如,在我的应用程序中,我在
-[NSArray count]
上执行swizzling方法。其他进程中的代码是否会受到该方法swizzling的影响


AFAIU方法分辨率应在流程内。但我不确定系统框架中的代码。他们是否在进程之间共享自己的方法分辨率,或者每个进程都有方法分辨率?否。如果有,请考虑安全漏洞

顺便说一句:你到底为什么要喝“伯爵”


一般来说,嘶嘶声是不好的。易碎品,一个维护噩梦,一个被商店拒绝的好方法

你认为其他工艺主要是什么?像其他应用程序或线程一样?例如,其他应用程序只是一个旁注-
NSArray
是类集群。这意味着,您需要在运行时找到所有私有子类,并为所有子类swizzle
count
,而不是swizzle
-[NSArray count]
。当然,这是个非常糟糕的主意。@BorysVerebskyi是的,我知道。不过,当我想到共享系统框架中的一个简单示例时,这是第一件事:)我担心这方面的安全问题,我不想轻率地计数。我只是对Objective-C运行时感到好奇,并将此计数作为一个简单易懂的示例:非常感谢。你有更深入的信息吗?例如,当系统框架加载到流程中时,Objective-C运行时如何在该流程中进行方法解析?它是否在进程内维护调度表?系统上的每个进程都有效地使用自己的用户空间内存副本运行。大部分内存都是共享的——要么是只读的(可执行代码和其他静态数据),要么是写时复制的(很少——基本上,你只需触摸一个字节,你就可以得到一个其他进程看不到的数据页副本)——所以,是的,每个进程都有自己的方法表。当你旋转时,你在内存中弄乱了只有你的进程才能看到的进程的方法表。我也是你的超级粉丝。谢谢你在这里的贡献:)很乐意帮忙!您可能会发现这个概述很有趣。请注意,iOS的工作原理与本文描述的基本相同。