作者:拍友2602923913 | 来源:互联网 | 2022-12-06 10:27
我目前正在为iOS 12准备好我的应用程序,但是每当我点击任意一个应用程序UITextField
或UITextView
应用程序崩溃时,都会出现此无法识别的选择器错误。
我尝试过的
他们的代表链接到文件所有者(是的,我知道-旧术语),但是它们与所有内容都不相同,并且在中停止引用它,UIViewController
但是仍然会出现相同的崩溃和错误消息。
添加了一个全新的UITextView
/ UITextField
但同样的崩溃错误。
在网上到处都可以搜索,但是没有什么有用的。
仅在iOS 12上崩溃。iOS 11及更低版本的工作完美,没有问题。
应用程序使用Firebase,Crashlytics / Fabric和其他一些第三方库,这些库均使用最新的SDK / API版本。
我发现最近的东西是我在Xcode 10 Beta 6和公共Xcode 9中找不到的AFAnalytics.h
一部分AssistantServices.framework
?
老实说,我已经开始用尽所有想法,因此,尝试解决此问题的任何帮助将是巨大的帮助。
我正在用Objective-C写作。
完整的堆栈跟踪:http : //crashes.to/s/dd22fb06f7b
更新-2
/09 /2018-奇怪的是Keyboard Type
,E-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