草庐IT

Swizzling

全部标签

ios - Firebase 消息传递方法 swizzling 不起作用

您好,我正在实现FCM(基于Fire的云消息传递)。我已经让应用程序接收来自FCM控制台的通知和数据。我有我的服务器通知和firebase通知。我想分别处理两种类型的通知(来self的服务器和来自FCM)。我已经阅读了文档,这可以通过调整AppDelegate中的通知处理程序来实现但问题是我只能在中获取FCM消息数据(IOS10)-(void)userNotificationCenter:(UNUserNotificationCenter*)centerwillPresentNotification:(UNNotification*)notificationwithCompletion

objective-c - ShareKit 方法在 Lion/Xcode 4.3.1 中调配?

我最近使用iOS5SDK和共享库升级到Lion和Xcode4.3.1ShareKit已损坏-它为其电子邮件处理程序使用方法调配。显然苹果有banned或者至少尝试逐步淘汰方法调配。ShareKit导入一个文件,不再存在,并定义了自己的方法swizzling方法SHKSwizzle.它使用它来改变MFMailComposeViewController的viewDidDisappear:方法如下:SHKSwizzle([MFMailComposeViewControllerclass],@selector(viewDidDisappear:),@selector(SHKviewDidDis

ios - 如何在没有子类化的情况下使所有 UITextViews 的背景为紫色?

我有一个要调试的应用程序。我希望应用程序中的每个UITextview都具有紫色背景。我认为methodswizzling是一个可能的解决方案,但我无法让它发挥作用。问题:如何在不子类化或手动设置每个TextView的背景颜色的情况下做到这一点?谢谢 最佳答案 像这样的东西应该可以解决问题:[[UITextViewappearance]setBackgroundColor:[UIColorpurpleColor]];外观代理是在iOS5中引入的,作为一种无需子类化即可对核心UIKit类进行样式化的便捷方式。它可以以各种非常有用的方式使

ios - 使用 swizzling 更改 UIAlertView

我最近收到了一个私有(private)硬件SDK,可以集成到我公司的移动应用程序中。一切都很好,除了他们使用的是UIAlertView作为一些不透明方法调用的结果,我的设计团队想要标记它。我无权访问SDK的源代码。有什么方法可以让我安全地混合UIAlertView保留所有功能并简单地修改UIAlertView的外观所以它更具品牌/与应用程序外观一致?如果是这样,我会重载drawRect或其他东西,我如何找出UIAlertView中标签的名称?以便我可以用我想要的大小、形状和颜色绘制它们?有关更多详细信息,该应用目前不使用UIAlertView或UIAlertViewController

iOS Method Method Swizzling - 2 SDK 试图在 1 个应用程序中 Swizzle "ViewDidAppear"方法,然后会发生什么?

如果我在我的iOS应用程序中添加2个SDK,它在内部为相同的方法“ViewDidAppear”进行方法调配,那么在运行时可能会发生什么(好的+坏的)。 最佳答案 根据swizzling方法,可能出现几种不同的情况:无限递归-堆栈溢出将使用后一个swizzled实现建立了某种责任链 关于iOSMethodMethodSwizzling-2SDK试图在1个应用程序中Swizzle"ViewDidAppear"方法,然后会发生什么?,我们在StackOverflow上找到一个类似的问题:

ios - Swizzling 符合 UI_APPEARANCE_SELECTOR 的属性

我正在尝试调整UIView上的backgroundColor属性。在我调酒之前,我执行以下操作:@implementationUIView(Cat1)+(void)load{NSArray*selectors=@[//HighliterswizzlingNSStringFromSelector(@selector(setBackgroundColor:)),NSStringFromSelector(@selector(backgroundColor))];[[selfappearance]setBackgroundColor:[UIColorredColor]];for(NSStrin

ios - 如何混合 NSURLConnectionDataDelegate 方法?

是否可以调配connection:didReceiveResponse:和connection:willsendrequestforauthenticationchallenge:委托(delegate)方法。如果是,请建议我一种方法来做到这一点。我可以调配initwithrequest:方法,但无法调配委托(delegate)方法。注意:我可以使用nsurlconnection,尽管它已被弃用。 最佳答案 使用NSURLProtocal而不是swizzling,参见教程:https://www.raywenderlich.com/

ios - 你能调配应用程序 :didReceiveRemoteNotification:

我目前正在开发一个需要调整AppDelegate应用程序的产品:didReceiveRemoteNotification:(我不想在appDelegate本身中调用我的新方法)。问题是:调配根本不起作用。之前我已经多次调配方法并取得成功,而这一次,替换实现根本没有被调用。我想知道这是否是因为appDelegate方法的某些特殊性,因为这些方法是由系统调用的,而不是应用程序调用的。 最佳答案 我将假设您的问题中缺少的大部分内容,最好始终尽可能发布带有代码示例的问题。您需要确保在UIApplicationDelegate的特定实现上调整

ios - UIView 的 drawRect 在 swizzled 时没有被调用

我正在试验高级Objective-C方法。我想要实现的是将特定的绘图代码附加到现有的UIView。我开始很容易,我继续在类别中声明我自己的drawRect方法:@interfaceUIView(Swizzled)-(void)my_drawRect:(CGRect)rect;@end然后我在category的实现中swizzle了UIView的drawRect方法:+(void)load{[selfswizzleInstanceMethod:@selector(drawRect:)withMethod:@selector(my_drawRect:)inClass:[UIViewclas

java - 'Swizzle'(也许通过反射?) addView() 在 Android 上

我知道您实际上不能用Java进行Swizzle。我正在做一些研究,我认为“也许”你可以在Java中进行反射来完成类似Swizzle的行为(你可以在iOS上进行)。罪魁祸首(也是我见过的最糟糕的设计决策之一)是所有AndroidViewGroup对象上的addView()函数。您必须明确检查父级是否为空(有时您甚至需要强制转换父级以获得所需的行为!)。毛。我想通过让addView()方法自动执行此检查来更改它的行为(无需创建一百万个子类),以便客户端代码可以忽略它。这是我可以用Reflection做的事情吗(据我所知,它需要特殊的运行时调用,而不是实际更改根方法调用[所以可能不够好]),