问题标签 [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.
ios - 如何在 Swift 中调配 init
我正在关注Swift 和 Objective-C Runtime,它适用于普通方法。
我喜欢swizzle init 方法,据我了解,init 就像一个类方法。所以我尝试将 init 作为实例和类方法。但这似乎不起作用
我可以使用 Objective C 让它工作,只是想知道如何让它在 Swift 中工作
摘自我的要点
ios - Swizzling 不适用于类方法
Swizzling 不执行动态方法交换。这是我使用的代码。我听说这是一个解决方案,其中依赖注入无法在 xcode 7 的 XCTest 中执行。你能举例说明 Swizzling over DI(Dependency) 吗?
在这里,当我调用 [TNUserDetail isSignUpWithTwitter] 时,+(BOOL)isSignUpSwizzle 没有被调用,只有实际的方法被调用。出了什么问题。注意这两种方法都是类方法。
ios - 调试核心数据 __NSCFSet addObject nil 异常
我在单元测试期间在核心数据线程上抛出异常,并显示以下消息:
CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的一个错误。-[__NSCFSet addObject:]: 尝试用 userInfo (null) 插入 nil
我正在尝试确定是什么原因造成的,但由于它发生在NSManagedObjectContext
队列上,因此该线程没有我自己的任何代码的堆栈跟踪。
-[__NSCFSet addObject:]
我在and上设置了符号断点-[NSManagedObjectContext processPendingChanges]
,但在停在那里时看不到任何状态,这有助于我确定哪些对象导致了问题。
我想到的下一步是尝试 swizzling-[__NSCFSet addObject:]
添加我自己的实现,所以我只能在参数为零时停止。希望集合不是空的,我可以通过在插入 nil 之前查看其内容来获取更多信息。不过,我在调配它时遇到了困难,因为它是一门私人课程。
使用上面的一种方法,或者我没有考虑过的一种方法,我怎样才能获得有关导致异常的原因的更多信息?
ios - 如何使用 3D touch peek pop 正确调整 UIScrollView?
我正在尝试调整嵌入 3D Touch 的 peek and pop 预览的 UIScrollView。(我知道它是通过 Reveal 应用程序的 UIScrollView。)
我想知道用户何时在此滚动视图/3D 触摸预览上移动手指。
我尝试按如下方式调整它:
但是当我的手指在屏幕上滑动应该有数百个呼叫时,它只会呼叫一次或两次“是”。
我错了吗?
java - 是否可以为 Android 'Swizzle' Java 类?
iOS 中的方法调配允许开发人员在运行时更改一种类的实现。例如,不是向每个视图控制器添加代码,而是 swizzling 允许编写一种方法,并且每个视图控制器都将使用该方法。在为 Android 编写代码时,有什么会导致相同的效果吗?编写一个每个 Activity 都可以使用的方法,而不必将方法粘贴到每个 Activity 中?
有关方法混合定义的更多信息,请参见: http: //nshipster.com/method-swizzling/
objective-c - Objective-C 覆盖系统方法
我发现一个 c++ 系统方法会导致 ios 崩溃,我尝试调整该方法。但是,我不知道该怎么做,因为它是 c++ 类的方法。任何人都知道我是否可以这样做?
c - 系统方法调用时如何插入自定义方法?
我正在将一个 Objective-C 项目翻译成 Swift。
我想在调用系统方法时执行自定义方法。
Objective-C 中的代码:他使用了一种 C-Type 方法,即 swizzling 方法。执行自定义方法并继续运行系统方法:
我应该在 Swift 中做什么?如何从 IMP 中执行方法?
而且这个函数不仅仅为 reloadData() 准备,而是 endUpdate() !
objective-c - NSObject 上的方法 swizzling,不适用于 UIView
我想监控我的应用程序中的所有发布调用,因此我决定在 NSObject 上使用方法调配,以便可以监控所有类。实际代码取自此处,但为了清楚起见,我也会将其附加到此处。
似乎,尽管所有(大多数?)案例都有效,但这不适用于 UIView 及其子项。
我期待的是,即使 UIView 覆盖了这个方法,或者即使对它进行了调配,最终这个方法也会以原始的发布方法结束,因此通过调配我的代码将被执行。
如果我将 swizzling 放在 UIView 类和NSObject 类上,那么 swizzling 就完美了。如果我把它放在 NSOBject 上,Swizzling 在 UIResponder 类中也可以正常工作。似乎 UIView 有一些打破链条的自定义实现?
这是我正在使用的代码:
ios - 是否可以拦截任何 UIViewController 子类上的所有方法类
假设我希望能够拦截对 UIViewController 子类的任何方法调用。
首先,我 swizzle+(instancetype)alloc method
并检查当前实例是否isKindOfClass:[UIViewController class]
. 如果是,我继续用目标实例化我的代理。
问题是我崩溃了,所以我希望我的代理的实现是错误的......我做错了什么?
这是一个例外:
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)
.