问题标签 [swizzle]

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 投票
2 回答
5880 浏览

ios - 如何在 Swift 中调配 init

我正在关注Swift 和 Objective-C Runtime,它适用于普通方法。

我喜欢swizzle init 方法,据我了解,init 就像一个类方法。所以我尝试将 init 作为实例和类方法。但这似乎不起作用

我可以使用 Objective C 让它工作,只是想知道如何让它在 Swift 中工作

摘自我的要点

0 投票
1 回答
1114 浏览

ios - Swizzling 不适用于类方法

Swizzling 不执行动态方法交换。这是我使用的代码。我听说这是一个解决方案,其中依赖注入无法在 xcode 7 的 XCTest 中执行。你能举例说明 Swizzling over DI(Dependency) 吗?

在这里,当我调用 [TNUserDetail isSignUpWithTwitter] 时,+(BOOL)isSignUpSwizzle 没有被调用,只有实际的方法被调用。出了什么问题。注意这两种方法都是类方法。

0 投票
3 回答
5563 浏览

ios - 调试核心数据 __NSCFSet addObject nil 异常

我在单元测试期间在核心数据线程上抛出异常,并显示以下消息:

CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的一个错误。-[__NSCFSet addObject:]: 尝试用 userInfo (null) 插入 nil

我正在尝试确定是什么原因造成的,但由于它发生在NSManagedObjectContext队列上,因此该线程没有我自己的任何代码的堆栈跟踪。

-[__NSCFSet addObject:]我在and上设置了符号断点-[NSManagedObjectContext processPendingChanges],但在停在那里时看不到任何状态,这有助于我确定哪些对象导致了问题。

我想到的下一步是尝试 swizzling-[__NSCFSet addObject:]添加我自己的实现,所以我只能在参数为零时停止。希望集合不是空的,我可以通过在插入 nil 之前查看其内容来获取更多信息。不过,我在调配它时遇到了困难,因为它是一门私人课程。

使用上面的一种方法,或者我没有考虑过的一种方法,我怎样才能获得有关导致异常的原因的更多信息?

0 投票
1 回答
291 浏览

ios - 如何使用 3D touch peek pop 正确调整 UIScrollView?

我正在尝试调整嵌入 3D Touch 的 peek and pop 预览的 UIScrollView。(我知道它是通过 Reveal 应用程序的 UIScrollView。)

我想知道用户何时在此滚动视图/3D 触摸预览上移动手指。

我尝试按如下方式调整它:

但是当我的手指在屏幕上滑动应该有数百个呼叫时,它只会呼叫一次或两次“是”。

我错了吗?

0 投票
0 回答
723 浏览

java - 是否可以为 Android 'Swizzle' Java 类?

iOS 中的方法调配允许开发人员在运行时更改一种类的实现。例如,不是向每个视图控制器添加代码,而是 swizzling 允许编写一种方法,并且每个视图控制器都将使用该方法。在为 Android 编写代码时,有什么会导致相同的效果吗?编写一个每个 Activity 都可以使用的方法,而不必将方法粘贴到每个 Activity 中?

有关方法混合定义的更多信息,请参见: http: //nshipster.com/method-swizzling/

0 投票
1 回答
109 浏览

objective-c - Objective-C 覆盖系统方法

我发现一个 c++ 系统方法会导致 ios 崩溃,我尝试调整该方法。但是,我不知道该怎么做,因为它是 c++ 类的方法。任何人都知道我是否可以这样做?

0 投票
0 回答
73 浏览

c - 系统方法调用时如何插入自定义方法?

我正在将一个 Objective-C 项目翻译成 Swift。

我想在调用系统方法时执行自定义方法。

Objective-C 中的代码:他使用了一种 C-Type 方法,即 swizzling 方法。执行自定义方法并继续运行系统方法:

我应该在 Swift 中做什么?如何从 IMP 中执行方法?

而且这个函数不仅仅为 reloadData() 准备,而是 endUpdate() !

0 投票
0 回答
211 浏览

objective-c - NSObject 上的方法 swizzling,不适用于 UIView

另一个方法swizzling 问题,以前没有问过。

我想监控我的应用程序中的所有发布调用,因此我决定在 NSObject 上使用方法调配,以便可以监控所有类。实际代码取自此处,但为了清楚起见,我也会将其附加到此处。

似乎,尽管所有(大多数?)案例都有效,但这不适用于 UIView 及其子项。

我期待的是,即使 UIView 覆盖了这个方法,或者即使对它进行了调配,最终这个方法也会以原始的发布方法结束,因此通过调配我的代码将被执行。

如果我将 swizzling 放在 UIView 类NSObject 类上,那么 swizzling 就完美了。如果我把它放在 NSOBject 上,Swizzling 在 UIResponder 类中也可以正常工作。似乎 UIView 有一些打破链条的自定义实现?

这是我正在使用的代码:

0 投票
1 回答
216 浏览

ios - 是否可以拦截任何 UIViewController 子类上的所有方法类

假设我希望能够拦截对 UIViewController 子类的任何方法调用。

首先,我 swizzle+(instancetype)alloc method并检查当前实例是否isKindOfClass:[UIViewController class]. 如果是,我继续用目标实例化我的代理。

问题是我崩溃了,所以我希望我的代理的实现是错误的......我做错了什么?

这是一个例外:

0 投票
0 回答
79 浏览

c++ - 使用转换运算符时模板推导失败,但显式转换有效

我正在尝试使用模板编程在 C++ 中实现 swizzle 向量。对于 swizzle 向量,我的意思是类似于 hlsl 和 glsl 向量的向量,例如,如果你有一个向量v = (1,2,3,4)并且v.xxyz它会产生向量 (1,1,2,3)。

这涉及一个类似于下面给出的示例的数据结构,但是我删除了一堆东西以生成一个最小的工作示例。

在上面的示例中,使用类型参数对 Foo 的调用swizzle不会编译,除非我将其显式转换swizzle为 avec2<float>即使swizzle具有转换运算符。处理模板时隐式转换不起作用吗?我的问题是我希望能够Foo同时Foo(v)使用Foo(v.xy).