swizzling相关内容

Objective-C 中方法混用的危险是什么?

我听说人们说方法混合是一种危险的做法.甚至 swizzling 这个名字都暗示它有点作弊. Method Swizzling 正在修改映射这样调用选择器 A 将实际调用实现 B.它的一种用途是扩展封闭源类的行为. 我们能否将风险形式化,以便决定是否使用 swizzling 的任何人都可以做出明智的决定,是否值得他们尝试做的事情. 例如 命名冲突:如果类稍后扩展其功能以包含您 ..
发布时间:2022-01-31 21:21:10 移动开发

如何实现方法 swizzling swift 3.0?

如何在 Swift 3.0 中实现方法 swizzling? 我已经阅读了关于它的 nshipster 文章,但是在这段代码中 struct 静态 {静态 var 标记:dispatch_once_t = 0} 编译器给我一个错误 dispatch_once_t 在 Swift 中不可用:使用延迟初始化改为全局变量 解决方案 首先 dispatch_once_t 在 Swi ..
发布时间:2021-12-05 20:19:58 移动开发

在 Objective-C 中方法 Swizzling 的危险是什么?

我听说有人说方法调配是一种危险的做法.就连名字 swizzling 都暗示它有点作弊. Method Swizzling 正在修改映射这样调用选择器 A 将实际调用实现 B.它的一种用途是扩展闭源类的行为. 我们能否将风险形式化,以便任何决定是否使用 swizzling 的人都可以做出明智的决定,是否值得他们尝试做的事情. 例如 命名冲突:如果该类稍后扩展其功能以包含您添加 ..
发布时间:2021-12-02 18:36:08 移动开发

App Store - Method Swizzling 合法性

App Store 上是否有关于方法调配是否合法/非法的最新信息? 我能找到的唯一数据点是 Three20 框架改组不久前,从这条通知开始: 您的应用程序 xxx 当前发布到 App Store 正在使用method_exchangeImplementations 交换苹果的实现提供带有您自己实现的 API.因为即将更改,您的应用程序中的这种行为可能会导致崩溃或导致iPhone OS ..
发布时间:2021-11-16 23:30:19 移动开发

UIView 的方法调整

我正在关注“这个"指导.捕获 UIView touchesBegan,但是当我 NSLog() touchesBegan 在它用于的 UIViewController 中时,它不会触发,但会触发混合的方法.有没有办法让它在两者中都着火? 解决方案 当 swizzling 方法时,你基本上是在告诉 Objective-C 运行时改变它的方法 selector 的内部映射(你如何调用它)到一个 ..
发布时间:2021-09-13 20:08:01 移动开发

willMoveToWindow 被调用两次

我正在使用 willMoveToWindow: 并且我遇到了一个问题,它在视图上被调用了两次. 当一个新的视图控制器被推送到一个 UINavigationController 上时, willMoveToWindow: 使用 nil 值在现有视图上调用(有意义,因为视图移出屏幕) 在那之后,方法 willMoveToWindow: 再次被调用,但现在使用原始窗口. 我最初的 ..
发布时间:2021-09-12 20:36:41 移动开发

swift 4 中的方法调配

Swift 4 中的 Swizzling 不再有效. 方法 'initialize()' 定义了 Objective-C 类方法 'initialize',这是 Swift 不允许的 这是我找到的解决方案,所以想把问题和答案留给其他人. 解决方案 initialize() 不再暴露:Method 'initialize()' 定义了 Objective-C 类方法 'initi ..
发布时间:2021-09-02 18:52:33 移动开发

UIView 方法 swizzling swift 3

我正在尝试根据答案在 swift 3 中实现方法 swizzling 如何在 Swift 3.0 中实现方法 swizzling? 这是我的代码: //MARK: - Swizzling私人让 swizzling: (UIView.Type) ->() = { 查看让 originalSelector = #selector(view.awakeFromNib)让 swizzledSele ..
发布时间:2021-09-02 18:34:57 移动开发

Swift 函数调配/运行时

在 Swift 之前,在 Objective-C 中,我会使用 来混合或钩子类中的方法. 如果有人有任何关于修改 Swift 的运行时和挂钩函数(如 CydiaSubstrate 和其他在该领域有帮助的库)主题的信息,请告诉我. 解决方案 我在 Swift 中成功地使用了方法 swizzling.这个例子展示了如何在 NSDictionary 上挂钩 ..
发布时间:2021-07-13 19:58:37 移动开发

iOS 使用什么函数/系统调用来读写文件

我想在 iOS 上拦截文件读/写,以便为我的一些应用程序提供透明的加密/解密功能.​​ 我知道我可以调配各种 SDK 方法来读取/写入文件来执行此操作,但这需要大量艰苦的工作并且容易出错(我可能会错过调配某些方法,导致我的应用程序崩溃/行为不端). 如果所有这些方法都使用了一些通用的系统调用/函数,那么我宁愿混合它并节省一些艰苦的工作+使其更加万无一失.有没有这样的通用入口点? ..
发布时间:2021-06-11 20:43:47 移动开发

您可以混淆应用程序:didReceiveRemoteNotification:

我目前正在开发需要混淆AppDelegate应用程序的产品:didReceiveRemoteNotification :(我不想在appDelegate自身中调用我的新方法). 问题是:混乱根本不起作用.在成功之前,我已经多次反复使用方法,而这次,根本没有调用替换实现.我想知道这是否是因为appDelegate方法的某些特殊性,因为这些方法是由系统而不是由应用程序调用的. 解决方案 ..
发布时间:2021-05-17 19:27:50 移动开发

ios swizzle更好的理解

我有一个带有以下代码的UIViewController: -(void)viewDidAppear:(BOOL)动画{[super viewDidAppear:animated];NSLog(@"CLASIC");} 然后我有了一个带有UIViewController类别的框架,该框架确实以这种方式闪烁: +(void)load {静态dispatch_once_t OnceToken; ..
发布时间:2021-05-16 21:08:33 移动开发

我可以麻烦UITableViewDelegate的didSelectRowAtIndexPath:吗?

问题是这样的: 我需要能够在具有大量tableViews的大型现有应用程序中对didSelectRowAtIndexPath进行分析. 我首先想到的是在didSelectRowAtIndexPath上进行方法转换:但是我的应用程序崩溃,并显示“无法识别的选择器发送到实例"消息,具体取决于在原始didSelectRowAtIndexPath实现中所访问的内容. 这是我尝试在UIVi ..
发布时间:2021-02-08 18:37:16 移动开发

iOS的Firebase Cloud Messaging通知未显示打开和分析

我正在使用FCM向iOS应用发送通知.通知在设备上的接收状况良好,但是在通知控制台GUI中无法获得“打开"或“转换"率.对于发送的近200 0000条通知,它始终显示"0已打开"和"0转换". 我仔细检查了所有实现,但无法正常工作. 我在plist中将FirebaseAppDelegateProxyEnabled设置为YES.我实现了Firebase指南和文档中列出的所有方法. ..
发布时间:2020-11-07 21:07:42 移动开发

混乱时未调用UIView的drawRect

我正在尝试先进的Objective-C方法。我想要实现的是将特定的绘图代码附加到现有的 UIView 。 我很容易上手,继续在类别中声明我自己的 drawRect 方法: @interface UIView(Swizzled) -(void)my_drawRect:(CGRect)rect; @end 然后我将 drawRect刷掉了 UIView 的方 ..
发布时间:2020-10-09 23:45:09 移动开发

有什么方法可以猴子补丁或混淆NSArray(或其他类集群)吗?

今天,我正在一个项目中,我想为 NSArray 的所有实例“别名”另一种方法,并且认为这不会太困难并带有很好的老式方法。 我爆发了 JRSwizzle 和… [NSArray jr_swizzleMethod:@selector(objectAtIndex :) withMethod:@selector(objectAtIndex_accordingToMe :) error:nil] ..
发布时间:2020-10-04 00:37:17 移动开发

SIMBL方法混乱

在使用SIMBL连接的外部应用程序中,我在覆盖某些功能方面遇到了很大的麻烦. 在此应用中,有一个类-我们将其称为"AppClass".此类中有一个函数, -(void)doSomething; 我是从类转储二进制文件中得到的.整个界面定义为: @interface AppClass : NSObject { } 我正在尝试使用jr_swizzleMethod:withMe ..
发布时间:2020-08-12 01:09:37 其他开发

在Objective-C中方法混乱的正确方法

当前在Objective-C中使用方法swizzling进行实验,我有一个问题.我试图了解解决方法的正确方法,并且在网上研究后偶然发现了NSHipster的这一帖子: http://nshipster.com/method-swizzling/ 在帖子中,作者提供了一些使示例代码混乱的方法.我正在寻找可以更好地向我解释作者正在做什么的人.尤其是我对didAddMethod逻辑感到困惑.为什么 ..