问题标签 [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.
java - Java的自动指针混合?
假设我们有一个由节点和指针表示的任意图,如下所示:
现在,我想复制它或在磁盘上写入/读取它(AKA 序列化/反序列化)。我也知道可以使用搜索算法+关联数组来完成。而且,事实证明这种方法称为swizzling。
这是我的问题:
我听说在 Java 中通过将类声明为 Serializable,这个特性是自动为你提供的。(这对我来说听起来像是一个魔法!)
这个说法正确吗?Java 是否会自动运行 BFS 来遍历图形并调整指针?换句话说,序列化/反序列化是否会为我克隆对象?(具有相同结构但新节点和更新指针的全新对象)
如果是,那么如果在某些情况下我只想复制指针怎么办?如果我想序列化对象只是为了保留原始指针怎么办?
我很欣赏对此的任何评论。:-)
objective-c - 混合单个实例,而不是类
我在 NSObject 上有一个类别,它应该包含一些东西。当我在一个对象上调用它时,我想重写它的 dealloc 方法来进行一些清理。
我想使用方法调配来做到这一点,但不知道怎么做。我发现的唯一示例是关于如何替换整个类的方法实现(在我的情况下,它将覆盖所有 NSObjects 的 dealloc - 我不想这样做)。
我想重写 NSObject 特定实例的 dealloc 方法。
objective-c - 使用动态库的Objective C Method Swizzling
我正在尝试学习方法调配。我在目标 C 中创建了一个程序,它只在其类中调用一个方法。现在我正在尝试使用 DYLD_INSERT_LIBRARIES 加载动态库,以便我可以使用动态库中定义的新方法覆盖我的方法实现。目的是修改参数,然后调用原始函数调用。
程序代码见 http://pastebin.com/a0b3qkgB 动态库代码见 http://pastebin.com/Ndf6VdUt
我观察到,只要在动态库中执行“if (self == [Encryption class]) {”行,代码就会显示类名,然后吐出奇怪的消息。完整输出:
我不确定代码有什么问题。任何帮助,将不胜感激。
目标是使用动态库(代码注入)覆盖目标 C 方法。
objective-c - UIButton swizzling 导致 UITableViewCellAccessoryType 出现问题
当is为真时,我有一堂课会调侃UIButton
's 。但是,在涉及和使用时也是如此。正在发生的事情是,由于某种原因,它正在对它们进行调配并在其后面添加自定义背景等。buttonType
UIButtonTypeCustom
UITableViewCellAccessoryCheckmark
UITableViewCellAccessoryDisclosure
accessoryType
我需要做的是检查UIButton
我试图调配的是否是 aUITableViewCellAccessoryType
但我不知道如何做这样的事情。
这是我用来调配UIButton
.
任何帮助将不胜感激!
objective-c - SIMBL 在取景器中大放异彩
我设法将 Mac Os Finder 中的图标覆盖(如 Dropbox)与 SIMBL 插件集成在一起!我使用 swizzle 方法来覆盖一些查找器功能。
这是我的调酒方法:
所以目前我像这样覆盖drawWithFrame方法:
我的所有图标都显示但不在我的桌面或将项目显示为图标的视图上...为什么?
谢谢你 ,
objective-c - 我的 isa-swizzling 打破了 KVO
我正在尝试实现 isa swizzling,因为我需要在某些对象的 dealloc 方法中发生一些操作。我正在覆盖 - (Class)class; 返回原始类的方法(如 KVO 所做的那样)。一切正常,直到我尝试将观察者添加到 swizzled 对象。它只是崩溃。
- 0x00000000 在 0x00000000 ()
- _NSKeyValueRetainedObservationInfoForObject()中的0x0091d22a
- 0x0092ec88 在 -[NSObject(NSKeyValueObserverRegistration) _addObserver:forProperty:options:context:] ()
- 0x0092d6fd 在 -[NSObject(NSKeyValueObserverRegistration) addObserver:forKeyPath:options:context:] ()
这是混合的实现
MDDummy 它只是一个以 convinietn 方式保存的类方法(这与添加原始函数没有区别)。
编辑:
下面是 class_addMethodFromClass 函数的实现:
objective-c - 有没有办法对 NSArray (或其他类集群)进行猴子补丁或调配?
今天我正在做一个项目,我想为 的所有实例“别名”一种替代方法,并且认为使用一些好的老式方法调配NSArray
不会太困难。
我爆发了JRSwizzle,然后……</p>
[NSArray jr_swizzleMethod:@selector(objectAtIndex:) withMethod:@selector(objectAtIndex_accordingToMe:) error:nil];
为了清楚起见,我将它与适当的类别 on 配对NSArray
,一个名为 的实例方法objectAtIndex_accordingToMe:
。
但是,我只是在同一个旧索引处得到同一个旧对象。叹。最终,我发现尽管没有抛出任何错误——我不会实现这些结果,因为它NSArray
是一个类集群
NSArray
我想我的问题更多是不愿意接受“这”真的是试图覆盖方法的尽头。我的意思是,来吧这是NSArray
..人们一定想搞砸它,不是吗?人们会认为Apple 的基础课程将成为各地调酒师的主要目标!
那么,有没有办法改变、别名、monkey-patch、覆盖或以其他方式使用...... NSArray 等(没有子类化)?
objective-c - iOS使用什么函数/syscall来读写文件
我想拦截 iOS 上的文件读/写,以便为我的某些应用程序提供透明的加密/解密功能。
我知道我可以调配各种 SDK 方法来读/写文件来做到这一点,但这需要大量的努力并且容易出错(我可能会错过调配某些方法,导致我的应用程序崩溃/行为不端)。
如果所有这些方法都使用了一些通用的系统调用/函数,那么我宁愿对其进行调整并节省一些艰苦的工作+使其更加万无一失。有没有这样的共同切入点?
PS:应用商店的接受度不是这里的标准,因为所有这些应用程序都是用于内部企业部署的。
谢谢!
objective-c - 是否可以使用它作为协议的实现来替换所有对象的方法?
是否可以使用它作为协议的实现来替换所有对象的方法?
方法是canPerformAction:(SEL)action withSender:(id)sender
:
最初的问题:无法禁用 UIWebView 上的“剪切、复制、粘贴”和“全选”弹出菜单。一些奇怪的对象在其canPerformAction
方法上生成它们。而且我找不到这个对象来替换它的类上的方法。
非常希望对您有所帮助。很长一段时间都解决不了这个问题。所有其他禁用选择的方法也会禁用我页面上的用户输入。而且我只能替换canPerformAction
正确或所有类的方法才能使其正常工作。