问题标签 [swizzling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
261 浏览

ios - 以编程方式限制当前应用程序的网络访问

是否可以调配或做一些事情,以使应用程序的任何部分,即使是静态库也不能产生不需要的互联网流量(并且仍然得到 Apple 审查过程的批准)?如果有办法,请描述。

0 投票
0 回答
828 浏览

objective-c - 我们可以在 Objective-C 块中使用 inout 参数吗?

像这样的东西?

或使用此类参数的替代方法。

语境:

我正在尝试调整 the 的scrollViewWillEndDragging:withVelocity:targetContentOffset:方法,UIScrollviewDelegate但最后一个参数targetContentOffset是 inout 参数。我正在使用https://github.com/JonasGessner/JGMethodSwizzler来调整期望将块用作替换方法的实例。

我正在尝试使用的代码...

谁能帮我吗 ?

0 投票
3 回答
153 浏览

objective-c - 在 ios 8 下无法获取 __NSCFURLSession 类

我有这样的代码片段

c = NSClassFromString(@"__NSCFURLSession");

使用 ios 7 模拟器,我能够得到 c

c类__NSCFURLSession 0x00000001113a2ce8

但在 ios 8 下,我得到了

c 类 0x0 0x0000000000000000

有人对此有解决方案吗?

0 投票
1 回答
125 浏览

ios - 无法调配 NSOutputStream 的 write:MaxLength:

在实际写入 NSOutputStream 之前,我需要编写自定义数据。

为了让 swizzling 代码执行,我创建了一个类别 NSOutputStream(SwizzleWrite),它包含以下内容:

然后我创建 Inout & 输出流: CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault, hostRef, 80, &readStream, &writeStream);

但是现在当控件到达handleEvent:delegate时,具体在:[outputStream write:rawstring maxLength:sizeof(rawstring)]; ,我在 swizzledWrite:maxLength 上没有得到它:

我在这里做错了什么?

PS:我已经读到 swizzling Apple 方法对 Appstore 不友好,但我也读过它们被接受的案例。

0 投票
3 回答
806 浏览

ios - 有没有办法“捕获”应用程序内的所有 UIButton 点击​​?

我希望能够跟踪我的用户正在点击的按钮。有没有办法“捕获”或“记录”我的应用程序内的所有按钮点击?

我在考虑方法调配,但我真的不想这样做。

0 投票
1 回答
228 浏览

objective-c - ISA swizzling 并调用“super”

假设以下类层次结构。类A是公开声明的:

_B是 的私有子类A

假设类的对象A只能使用工厂方法createInstance创建,该方法创建并返回_B.

我想A在每个实例的基础上增强实例的功能。所以我决定做一些 ISA swizzling 来实现:

我使用以下方法对一个NSObject类别进行 ISA swizzling(此处显示的幼稚实现):

一切似乎都有效,但我注意到它[super a];的行为不像预期的那样,-[A a]如果运行时的超类实际上是_B.

用以下代码替换对的调用super是可行的,但很丑陋,并且需要开发人员的知识和工作:

调用时编译器会发出什么super以及以任何方式更改此发出的代码?

0 投票
0 回答
270 浏览

ios - 所有子类的 Swizzle 方法

我有CLLocationManager方法课setDelegate:。我也有封闭框架中的继承类。我想交换setDelegate:这个类的实现和所有继承。

但我没有得到任何子类sfl_classGetSubclasses。这是第一个问题。第二:我知道子类的名称,我尝试在继承类中交换方法。

但是应用程序在运行时下降。在我使用封闭框架之前,交换方法可以完美运行。

0 投票
1 回答
1077 浏览

ios - Swizzling - 在 Objective-C iOS 中撤销方法选择器

我们在 Objective-C 中使用 Swizzling。为方便起见,我们使用 CoconutKit 的辅助方法来实现:

然而,我们还想在代码中的某个点之后取消调整此方法。有没有办法做到这一点?

0 投票
2 回答
1483 浏览

ios - Objective c中方法调配和类别之间的区别

我只是了解了在 obj c Method Swizzling中进行的方法调配以及使用方法调配的危险,忍不住在进行方法调配和使用类别覆盖方法实现之间进行了比较。它们都有助于覆盖预定义框架方法的功能。那么两者之间有什么区别还是可以互换使用?

0 投票
1 回答
572 浏览

ios - 如何在 iOS 中调配 UIApplication?

我需要对Swizzle UIApplication方法进行分类,尤其是“ application:handleOpenURL:”。我添加了 UIApplication 的类别类。我已经将自己的方法与原始方法交换了,但它从未触发过。Swizzle 类在应用程序启动的第一次调用,但从未触发 swizzle 方法。我附上了代码供您参考。

谁能拯救我的一天?我尝试使用一些私人图书馆,如“RSSwizzle”,但没有帮助。