Objective c 数据使用加密可能导致崩溃?

Objective c 数据使用加密可能导致崩溃?,objective-c,Objective C,当它进入NSString dataUsingEncoding方法时,崩溃很少发生 源代码: NSData*latin1Data=[appName dataUsingEncoding:NSUTF8StringEncoding] 调用堆栈: MACH_Exception Crashed with mach exception EXC_BAD_ACCESS Thread 0 name: (null) 0 libobjc.A objc_object::release() (in libob

当它进入
NSString dataUsingEncoding
方法时,崩溃很少发生

源代码:

NSData*latin1Data=[appName dataUsingEncoding:NSUTF8StringEncoding]

调用堆栈:

MACH_Exception Crashed with mach exception EXC_BAD_ACCESS

Thread 0 name: (null)
0    libobjc.A    objc_object::release() (in libobjc.A.dylib)
1    CoreFoundation    _common_removeAllObjects (in CoreFoundation) 188
2    CoreFoundation    -[__NSArrayM dealloc] (in CoreFoundation) 28

3    libobjc.A    (anonymous namespace)::AutoreleasePoolPage::pop(void*) (in libobjc.A.dylib) 704
4    libdispatch    __dispatch_root_queue_drain (in libdispatch.dylib) 1148
5    libdispatch    __dispatch_worker_thread3 (in libdispatch.dylib) 124
6    libsystem_pthread    __pthread_wqthread (in libsystem_pthread.dylib) 1288
7    libobjc.A    _objc_msgSend (in libobjc.A.dylib) 40
8    Foundation    -[NSConcreteMutableData initWithLength:] (in Foundation) 316
9    Foundation    -[NSString(NSStringOtherEncodings) dataUsingEncoding:allowLossyConversion:] (in Foundation)
10  xxxApp    -[ xxxClass xxxMethod]  xxxFile.mm line:300
xxxFile.mm的第300行是:

NSData*latin1Data=[appName dataUsingEncoding:NSUTF8StringEncoding]

编辑,从注释复制:

295 -(NSString *)userAgentString {
296     NSBundle *bundle = [NSBundle bundleForClass:[self class]];
297     // Attempt to find a name for this application
298     NSString *appName = [bundle objectForInfoDictionaryKey:@"CFBundleName"];
299
300     NSData *latin1Data = [appName dataUsingEncoding:NSUTF8StringEncoding];

调用函数userAgentString时在第300行崩溃

您应该从应用程序的邮件包中提取这些信息

NSString *buildNumber = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]
p、 s: 我很惊讶一门私人课能起作用。看来你偶尔会收到一封无信

(此处猜测:您的类也有一个初始化。如果该初始化没有及时完成,则运行时不知道该类所属的包?

您应该从应用程序的邮件包中提取该信息

NSString *buildNumber = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]
p、 s: 我很惊讶一门私人课能起作用。看来你偶尔会收到一封无信

(此处猜测:您的类也有一个初始化。如果该初始化没有及时完成,则运行时不知道该类所属的包?

appName的值是多少?
?它是什么-字符串还是其他任何东西?NSString*appName=[bundle objectForInfoDictionaryKey:@“CFBundleName”];这对我有用。我已经复制粘贴了你的代码并运行到我的xcode中。没有崩溃。
NSString*appName=[[NSBundle mainBundle]objectForInfoDictionaryKey:@“CFBundleName”]
NSData*latin1Data=[appName dataUsingEncoding:NSUTF8StringEncoding]-->相同的代码对我有效..是的,大部分时间都有效,但有时会崩溃。频率约为百万分之一。我怀疑此函数中存在一些错误。
appName
的值是多少?它是什么-字符串还是其他任何东西?NSString*appName=[bundle objectForInfoDictionaryKey:@“CFBundleName”];这对我有用。我已经复制粘贴了你的代码并运行到我的xcode中。没有崩溃。
NSString*appName=[[NSBundle mainBundle]objectForInfoDictionaryKey:@“CFBundleName”]
NSData*latin1Data=[appName dataUsingEncoding:NSUTF8StringEncoding]-->相同的代码对我有效..是的,大部分时间都有效,但有时会崩溃。频率约为百万分之一。我怀疑此函数中存在一些错误。