热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法识别的选择器+[AFAnalyticssharedAnalytics]?

如何解决《无法识别的选择器+[AFAnalyticssharedAnalytics]?》经验,为你挑选了1个好方法。

我目前正在为iOS 12准备好我的应用程序,但是每当我点击任意一个应用程序UITextFieldUITextView应用程序崩溃时,都会出现此无法识别的选择器错误。

我尝试过的

他们的代表链接到文件所有者(是的,我知道-旧术语),但是它们与所有内容都不相同,并且在中停止引用它,UIViewController但是仍然会出现相同的崩溃和错误消息。

添加了一个全新的UITextView/ UITextField但同样的崩溃错误。

在网上到处都可以搜索,但是没有什么有用的。

仅在iOS 12上崩溃。iOS 11及更低版本的工作完美,没有问题。

应用程序使用FirebaseCrashlytics / Fabric和其他一些第三方库,这些库均使用最新的SDK / API版本。

我发现最近的东西是我在Xcode 10 Beta 6和公共Xcode 9中找不到的AFAnalytics.h一部分AssistantServices.framework

老实说,我已经开始用尽所有想法,因此,尝试解决此问题的任何帮助将是巨大的帮助。

我正在用Objective-C写作。

完整的堆栈跟踪:http : //crashes.to/s/dd22fb06f7b


更新-2 /09 /2018-奇怪的是Keyboard TypeE-mail Address在界面构建器中将设置为可以很好地工作。将其设置为其他任何东西都会使应用程序崩溃。


更新-14/9/2018 另一个崩溃日志似乎表明错误围绕着[UIDictationConnection analytics]

这对任何人有意义吗?-这是Apple的当机报告。


更新-2/10/2018 我发现了此错误消息:

Class AFAnalytics is implemented in both /Users/ashleyrichards/Library/Developer/CoreSimulator/Devices/C155EF28-3C0B-4AFF-9EF6-0235295A26DC/data/Containers/Bundle/Application/562B100D-F657-424E-8B77-99D0325F6035/Social Dummy.app/Social Dummy (0x10a33d610) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/AssistantServices.framework/AssistantServices (0x13654d178). One of the two will be used. Which one is undefined.

我已经搜索了我的整个项目,但没有找到任何有关的课程AFAnalytics。作为记录,我不想使用AFAnalytics。我什至不知道它是做什么的。我如何摆脱它?



1> 小智..:

我找到了一种防止崩溃的解决方法。我们可以使用iOS运行时来混淆类方法。主要思想是将消息从重定向+[AFAnalytics sharedAnalytics]+[iOS12AFAnalyticsBug newSharedAnalytics]。类方法“ newSharedAnalytics”有意返回nil,并且消息为nil不会导致崩溃。但请谨慎使用此替代方法,因为您的应用程序中的某些代码出于某些目的使用AFAnalytics。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [iOS12AFAnalyticsBug fix];
    //your code
}

iOS12AFAnalyticsBug.h

@interface iOS12AFAnalyticsBug : NSObject

+ (void)fix;

@end

iOS12AFAnalyticsBug.m

#import "iOS12AFAnalyticsBug.h"
#include 

void SwizzleClassMethod(Class originClass, SEL originSelector, Class destClass, SEL newSelector) {

    Method originMethod = class_getClassMethod(originClass, originSelector);
    Method newMethod = class_getClassMethod(destClass, newSelector);

    originClass = object_getClass((id)originClass);

    if (class_addMethod(originClass, originSelector, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) {
        class_replaceMethod(originClass, newSelector, method_getImplementation(originMethod), method_getTypeEncoding(originMethod));
    } else {
        method_exchangeImplementations(originMethod, newMethod);
    }
}

@implementation iOS12AFAnalyticsBug

+ (instancetype)newSharedAnalytics {

    return nil; //All messages to nil won't cause a crash

}

+ (void)fix {

    Class originClass = NSClassFromString(@"AFAnalytics");
    SEL originSelector = NSSelectorFromString(@"sharedAnalytics");

    SwizzleClassMethod(originClass, originSelector, self.class, @selector(newSharedAnalytics));
}

@end


推荐阅读
  • ndk开发!34岁安卓开发大叔感慨,不吃透都对不起自己
    前言众所周知,移动开发已经来到了后半场,为了能够在众多开发者中脱颖而出,我们需要对某一个领域有深入地研究与心得,对于And ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 本文讨论了在PHP中将空格转换为问号的问题,并提供了解决方案。文章指出,空格不是标准的空格,而是特殊的0xC2 0xA0字符。作者尝试使用mb_convert_encoding函数将utf8字符串转换为gbk编码,但未成功。文章建议检查编辑器是否对空格进行了特殊处理,并提供了使用base64_encode函数打印结果的方法。最后,给出了完整的代码示例。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 由引起的bug~
    编程经验:一个由引起的bug~文章一 转自:http:www.mamicode.cominfo-detail-506772.html1.问题描述最近遇到一个莫 ... [详细]
  • 如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0,那么实现了完备的权限控制和安全保障的Hyperledger项目毫无疑问代表着区块链技术3.0 ... [详细]
  • SAPC/4HANA与人工智能和增强现实(AR)技术结合的又一个创新案例
    今天这篇迟到的文章,来自我的同事Aviva。去年SAPC4HANA发布之后,SAP的从业者们可能或多或少都读过一些来自SAP官方渠道,比如微信公众号"SA ... [详细]
  • 在android提供的sdk中,samples目录下有一个叫SampleSyncAdapter的示例,它是一个账号与同步的实例,比如Google原始的android手机可以使用Go ... [详细]
  • AndroidWeeklyhttp:androidweekly.net这份免费的周报里面应有尽有,包括文章、教程、视频和Git ... [详细]
  • 自动化运维工具Ansible的部署步骤详解
    本文来源于http:sofar.blog.51cto.com3535721579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享。一、基础介绍1、简介ansible是新 ... [详细]
author-avatar
拍友2602923913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有