天道酬勤,学无止境

ios 应用程序在启动时崩溃(ios app crash on startup)

问题

我开始为我的 iphone 应用程序使用 crashlytics,它似乎在启动期间对某些用户来说崩溃了(或者我猜是启动)。 这是堆栈跟踪:

Fatal Exception: NSInvalidArgumentException
-[NSNull rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0x19687eba0
Thread : Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x00000001854aa59c __exceptionPreprocess + 132
1  libobjc.A.dylib                0x0000000195bfc0e4 objc_exception_throw + 60
2  CoreFoundation                 0x00000001854b1664 __methodDescriptionForSelector
3  CoreFoundation                 0x00000001854ae418 ___forwarding___ + 928
4  CoreFoundation                 0x00000001853b2b6c _CF_forwarding_prep_0 + 92
5  UIKit                          0x0000000189fc38a0 -[UILabel _contentInsetsFromFonts] +    104
6  UIKit                          0x000000018a13ac90 -[_UILabelLayer updateContentInsets] + 76
7  UIKit                          0x000000018a13ad50 -[_UILabelLayer updateContentLayerSize] + 56
8  UIKit                          0x000000018a13ae34 -[_UILabelLayer layoutSublayers] + 36
9  QuartzCore                     0x00000001895ac564    CA::Layer::layout_if_needed(CA::Transaction*) + 320
10 QuartzCore                     0x00000001895ac408 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
11 QuartzCore                     0x00000001895abc08 CA::Context::commit_transaction(CA::Transaction*) + 276
12 QuartzCore                     0x00000001895ab98c CA::Transaction::commit() + 436
13 QuartzCore                     0x00000001895a53bc CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 80
14 CoreFoundation                 0x0000000185462a50 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
15 CoreFoundation                 0x000000018545f9dc __CFRunLoopDoObservers + 360
16 CoreFoundation                 0x000000018545fdbc __CFRunLoopRun + 836
17 CoreFoundation                 0x000000018538d0a4 CFRunLoopRunSpecific + 396
18 GraphicsServices               0x000000018e52f5a4 GSEventRunModal + 168
19 UIKit                          0x0000000189cc23c0 UIApplicationMain + 1488
20 partybutton                    0x00000001000d6de0 main (main.m:16)
21 libdyld.dylib                  0x000000019626aa08 start + 4

不确定如何调试它,因为我无法自己复制。 任何指针?

回答1

我有类似的问题。 来自服务器的 JSON 响应包含 NULL/null。 像这样的东西:

"result":[
    {
        "id":"44",
        "message":null,
    }]

我创建了一个NSNull类的类别。 然后添加导致异常的NSString方法。

NSNull+JSON.h 文件:

#import <UIKit/UIKit.h>

@interface NSNull(JSON)

@end

NSNull+JSON.m 文件:

@implementation NSNull (JSON)

- (NSUInteger)length { return 0; }

- (NSInteger)integerValue { return 0; };

- (float)floatValue { return 0; };

- (NSString *)description { return @"0(NSNull)"; }

- (NSArray *)componentsSeparatedByString:(NSString *)separator { return @[]; }

- (id)objectForKey:(id)key { return nil; }

- (BOOL)boolValue { return NO; }

- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet{
    NSRange nullRange = {NSNotFound, 0};
    return nullRange;
}

//add methods of NSString if needed

@end

通过这样做,我不必检查每个变量中的 NULL。

回答2

就我而言,服务响应的 JSON 数据包含 NULL 字符串,Json 解析将其视为字符串,但 iOS 系统没有。

回答3

kazi.munshimun,您可以使用 NSDictionary 扩展类来执行此操作。 它将自动检查 NULL 字段。

GitHub:NSDictionary 扩展类

回答4

在我的例子中, [NSNull rangeOfCharacterFromSet:]错误与一个空的用户定义运行时属性有关,我的一个视图控制器需要与第三方自定义导航控制器一起使用

回答5

IOS 不会将 NULL 视为 nil 并且在运行时它会崩溃。要克服这个问题,只需将您的 json 字符串与 NSNULL 进行比较,然后分配给字符串变量

NSString *yourVariable = ([stringVariable isEqual:[NSNull null]]) ? @"" : 字符串变量;

回答6

简单的方法是检查NSString *city= set value from json ; 例如

然后进行检查-->

NSString *city=[responseDictionaryForEachRow     valueForKey:@"City"];
if (![city isKindOfClass:[NSNull class]]){
    @"Your code if string is not null";`
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • iOS 4应用程序在iOS 3.1.3上启动时崩溃:找不到符号:__NSConcreteStackBlock(iOS 4 app crashes at startup on iOS 3.1.3: Symbol not found: __NSConcreteStackBlock)
    问题 我正在使用iOS 4.0 SDK运行Xcode 3.2.3。 我使用基本SDK = iphoneos4.0,活动SDK = iphoneos4.0,部署目标= 3.1.3和体系结构=标准(arm6 arm7)构建了我的应用程序。 编译器= GCC 4.2。 据我了解,这是为iOS 4和3构建应用程序的正确方法。 该应用程序在运行iOS 4的设备上运行良好。但是,当您尝试在装有iOS 3.1.3(iPod Touch 1G)的设备上运行该应用程序时,该应用程序会崩溃: dyld: Symbol not found: __NSConcreteStackBlock Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp Expected in: /usr/lib/libSystem.B.dylib 对于一个相当“低级”的动态链接库来说,这似乎是个问题,甚至在我的main()函数被调用之前。 我什至尝试重新启动设备等,但是没有运气。 这是崩溃日志的一部分: Process: MyApp [60] Path: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app
  • 仅 iOS 7 应用程序在启动时崩溃(iOS 7 Only App Crashes at Startup)
    问题 我最近将我的 xcode 项目更改为仅适用于 iOS 7 而不是支持 iOS 5。在应用程序启动后立即进行此更改后,我在控制台中收到此消息。 -[UICachedDeviceWhiteColor shadowColor]: unrecognized selector sent to instance 0x156f22f0 我不确定是什么原因造成的。 但是使用调试器似乎我的应用程序委托在第一行代码崩溃。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.rootViewController = self.tabBarController; //this line is where it crashes [self.window makeKeyAndVisible]; 任何帮助,将不胜感激 回答1 你可能做了我所做的,并且过度地削减和替换了 UITextAttributeTextShadowColor 和 UITextAttributeTextShadowOffset 的编译器警告。 所以你的代码看起来像这样: NSDictionary *titleAttributes = @
  • iOS开发应用启动失败(iOS development app startup crash)
    问题 我目前正在使用iOS应用程序,没什么大不了的,只是一个简单的预算跟踪程序。 工作流程如下:将一些新内容编码到应用程序中=>将我的iPhone连接到我的mac =>用Xcode构建应用程序到我的iPhone 6和我妻子的iPhone 6 plus(所以是两个不同的设备!)。 至此,一切正常。 但是过了一会儿(有时只有几天,有时是几周),该应用突然在同一时间在两种设备上停止工作,而没有任何前兆:我们不更新iOS,也不对环境进行任何更改,应用程序就开始像这样:https://s3.amazonaws.com/size-video-assets-public-v1/wp-content/appadvice-v2-media/2015/07/crash_9b28fddfc26f9f0380f1b0d0b2324018-quarter.gif(但在就我而言,该应用无法到达第一个视图,启动后立即崩溃)。 最奇怪的是,崩溃问题是在两个不同的设备上完全相同的时间开始的,但是“无问题间隔”从来都不相同:有时崩溃是在一天之后开始的,有时是在两周之后的,等等。在我重建之后将应用程序安装到带有Xcode的设备上,整个过程重新开始,并且该应用程序可以正常运行一会儿。 我已经尝试了以下方法来调试此问题: 修复了Swift频繁更改语法引起的所有警告,因此我的应用始终没有警告=
  • 带有静态库的iOS App仅在加载存档构建的Ad Hoc启动时崩溃。 无法在调试器中复制(iOS App with Static Lib crashes ONLY on launch of Archive Build loaded Ad Hoc. Can't reproduce in Debugger)
    问题 我意识到这是一个艰巨的过程,我无法提供太多信息以帮助您,但我无所不能。 我的应用程序经过持续三年的开发,从未见过这样的事情。 我最近向Apple提交了一个发行要点,现在两次被拒绝在其所有设备上启动时崩溃? “崩溃”报告指向静态库中的某些代码,但关键行未得到符号化。 尝试过阿托斯没有运气。 关键点是,我有7种设备可以在我能想到的每种模式下测试过该应用程序,尤其是没有任何连接:Wifi-OFF,AirplaneMode-ON,Location services-OFF。 我永远无法模拟他们声称看到的内容,这是每次启动时App崩溃吗?! 我在AAPL开发论坛上发现了一份听起来很相似的报告,但他对发生的事情一无所获。 在他提交了一个应用程序,并带着无数次的登录请求后,要求他们发送日志。 他们获得了该版本,并在数小时内批准了该版本。 有人有主意吗。 我需要发布此版本。 注意:已解决 事实证明这不是一个弱链接问题。 正如Brad所建议的,我们仅在使用存档版本的Ad Hoc发行版运行应用程序时才看到崩溃,因此非常有帮助。 但是,结果却是我在此处列出的一些编译器标志:https://stackoverflow.com/a/10302012/754494 回答1 我将从上面重新发布并扩展我的评论,以便使该问题的答案可以被接受。 最近,在构建我的GPUImage框架时遇到了类似的情况。
  • 从设置iOS 8启用“相机访问”后,应用程序崩溃(App crashes on enabling Camera Access from Settings iOS 8)
    问题 我正在为iPhone开发一个应用程序,它正在使用相机扫描条形码和拍照。 当我们没有摄像头访问权限并且用户启用了摄像头访问权限时,该应用程序将崩溃并重新打开。 你们可以帮我解决这个问题吗? 提前致谢。 回答1 首次访问相机时,操作系统将自动显示权限提示。 无论用户是允许还是拒绝提示,您的应用都将继续运行。 如果用户在某个时候更改了“通讯簿”,“日历”,“提醒”,“相机”或“照片”权限,iOS将对应用程序进行SIGKILL 。 采取此措施可确保该应用不再拥有任何先前授权的数据。 当用户从“设置”应用移回到第三方应用时,它从头启动,现在具有“拒绝”授权状态。 由于这种行为,我有两个建议: 检测何时拒绝该权限,并显示一些用户界面,说明用户需要切换“设置”应用程序权限。 在iOS 8中,您可以使用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]将它们直接带到应用程序的条目中。 实施某种状态还原,以便在终止应用程序并重新启动该应用程序时,它将使用户返回到先前可见的视图/功能。 来源(需要开发者帐户) 回答2 您的建议是正确的。 我呈现了一个警报视图,要求用户如果之前拒绝了相机和联系人的权限,请转到“设置”应用程序以更改相机和联系人的权限。
  • 需要帮助:“错误的架构”导致应用在 iOS 7 中启动时崩溃,但在 iOS 8 中运行良好(Need help: 'Wrong Architecture' causing app to crash when launching in iOS 7 but works fine in iOS 8)
    问题 我的应用程序在 iOS 7.1 中启动时崩溃,但在 iOS 8.1 中运行良好 我得到的错误是这样的: dyld:库未加载:/System/Library/Frameworks/AVKit.framework/AVKit 引用自: MY APP原因:未找到合适的图像。 确实找到了:/System/Library/Frameworks/AVKit.framework/AVKit:mach-o,但架构错误(lldb) 我也注意到一个类似的错误,但在一些编辑之前提到了 UIKit 而不是 AVKit。 有谁知道如何解决这个问题? 我正在使用 Xcode 6.1。 我真的不想因为只发布 iOS 8 而错过 iOS 7 用户。谢谢! 回答1 该应用程序崩溃是因为框架 AVKit 仅在 iOS 8 中引入,因此当您尝试为 iOS 7 编译应用程序时,应用程序崩溃,因为 iOS 7 SDK 不包含 AVKit 框架。 回答2 您可以做一件事,将框架设置为可选。 无需移除框架。
  • Objective-C iPhone 应用 EXC_BREAKPOINT (SIGTRAP)(Objective-C iPhone App EXC_BREAKPOINT (SIGTRAP))
    问题 我最近大约一个月前发布了一个应用程序,它经过了我自己、我的合作伙伴和 beta 测试人员的全面测试。 最近,一位用户联系我说该应用程序甚至无法打开(启动屏幕后崩溃),他们拥有正确的操作系统并尝试重新安装。 我要了崩溃日志,他们把它寄给了我...... Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x00000001, 0xe7ffdefe Crashed Thread: 0 Thread 0 Crashed: 0 dyld 0x2fe01060 0x2fe00000 + 4192 1 dyld 0x2fe088d4 0x2fe00000 + 35028 2 dyld 0x2fe0196c 0x2fe00000 + 6508 3 dyld 0x2fe01048 0x2fe00000 + 4168 Thread 0 crashed with ARM Thread State: r0: 0x2fe23ca0 r1: 0x00000000 r2: 0x2fe23ca0 r3: 0x00000000 r4: 0x2ffff4e0 r5: 0x2ffff4bc r6: 0x2fe005c0 r7: 0x2ffffb00 r8: 0x00000004 r9: 0x2fe57cf0 r10: 0x2fe236c8 r11
  • 升级到Google Play服务8.4.0后,我的应用在启动时崩溃(After upgrading to google play services 8.4.0 my app crashes on startup)
    问题 我以前一直在使用Google Play服务8.3.0,没有任何问题。 我想升级到Google Play服务8.4.0。 我正在使用以下播放库: compile 'com.google.android.gms:play-services-analytics:8.4.0' compile 'com.google.android.gms:play-services-location:8.4.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' 当我启动应用程序时,它崩溃,并显示以下日志。 12-27 03:01:33.915 20567-20567/com.ryanc.android.stage.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ryanc.android.stage.debug, PID: 20567 java.lang.NoSuchMethodError: No static method zzz(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes
  • 为什么连接回 iOS 后台 NSURLSession 需要等待锁定的时间过长,从而导致应用程序崩溃?(Why does connecting back to an iOS background NSURLSession take too long waiting on a lock, crashing the app?)
    问题 为什么通过其配置与 NSURLSession 连接需要很长时间,以至于它会在启动时使应用程序崩溃:“未能及时启动”? 我在许多 iOS 应用程序中看到过类似的崩溃转储,包括纽约时报 iOS 应用程序和 Evernote 应用程序。 [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:queue] 这是堆栈跟踪: Thread 0: 0 libsystem_kernel.dylib 0x3afb7aa0 semaphore_wait_trap + 8 1 libdispatch.dylib 0x3af04d3d _dispatch_semaphore_wait_slow + 173 2 CFNetwork 0x2febd8e3 -[__NSCFBackgroundSessionBridge setupBackgroundSession] + 379 3 CFNetwork 0x2fef18a1 +[__NSCFSessionBridge bridgeForConfiguration:session:queue:] + 153 4 CFNetwork 0x2fef6497 -[__NSCFURLSession initWithConfiguration:delegate
  • 带有静态库的iOS App始终在启动Ad Hoc Archive Build时崩溃。 无法在Xcode调试器中重现(iOS App with Static Lib ALWAYS crashes on Launch of Ad Hoc Archive Build. Cant reproduce in Xcode Debugger)
    问题 我们有一个使用静态库构建的应用程序,我们也在构建用于分发的库。 App和Lib在Xcode调试器中运行良好,或者在Xcode调试会话加载到设备上时运行良好。 只要将Ad Hoc Archive版本建立在设备上,App总是会崩溃。 控制台日志语句表明它在Lib代码中崩溃,但是崩溃报告并不表示Lib代码。 无法在Xcode Simulator中重现。 Guard malloc,Guard Edges不显示任何内容(但它们仅在模拟器中运行)。 无泄漏使用Xcode 4.3.2 应用定位到4.3或更高版本。 Lib目标是3.0或更高版本。 其他链接器标志= -ObjC 在目标“将二进制文件链接到库”中将库设置为“可选” 取消拇指支持(使用LLVM) 在控制台上看到2个可能有用的异常,但是到目前为止,在网络上没有出现任何异常,这对此有很大帮助: Application 'x' exited abnormally with signal 12: Bad system call: 12 (mostly) Application 'x' exited abnormally with signal 12: Bad system call: 11 (rarely) 我们在其他地方看到这样的评论,即带有递归的静态库存在问题。 但是我们的Lib中没有任何递归。 陷入困境,需要更多的想法。 回答1
  • 有时iOS 6 MKMapView在initWithFrame中崩溃(Occasionally iOS 6 MKMapView crashes in initWithFrame)
    问题 我在Apple Store上有一个应用程序,在iOS6更新后,我在MKMapView获得了数百个崩溃报告。 我无法在设备上重现崩溃。 看来EAGLContext有问题。 我们在应用程序中未使用OpenGL,但在不同的控制器中有多个MKMapView实例。 我在这里发现了类似的问题,在显示地图时iOS 6应用在EAGLContext中崩溃,但它们使用的是OpenGL。 这里有回溯: Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0x1 Crashed Thread: 0 Thread 0 Crashed: 0 libGPUSupportMercury.dylib 0x00000e22 gpus_ReturnNotPermittedKillClient + 10 1 libGPUSupportMercury.dylib 0x3bccc5fb gldCreateContext + 190 2 GLEngine 0x344c2b15 gliCreateContextWithShared + 676 3 OpenGLES 0x0000491d -[EAGLContext initWithAPI:properties:] + 1433 4 OpenGLES 0x000042d7 -[EAGLContext
  • 今天扩展在 iOS 8.1.2 上启动之前崩溃(Today Extension Crashes before launching on iOS 8.1.2)
    问题 我一直在做一个今天的扩展,从提要下载文章并显示最新的。 整个过程在 iOS 8 上运行良好,在 iOS 8.1 上仍然运行,然后是 iOS 8.1.2,我们开始抱怨今天的扩展不再起作用。 我尝试在 iOS 8.1.2 设备上进行调试,在扩展甚至启动之前,它因以下错误而崩溃: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)' 我已经阅读了这篇关于在开发今天的扩展时经常发生的错误的文章:http://www.atomicbird.com/blog/ios-app-extension-tip 在他的帖子中,汤姆哈灵顿说: 在 iOS 8(和其他最新版本)中,在 Xcode 的构建设置中启用模块意味着您无需明确列出要使用的所有框架。 它们会被自动找到。 但是NotificationCenter.framework 不是这种情况,Today 扩展使用了它。 如果您从构建设置中删除它,您将不会收到任何构建警告或错误。 但是当你尝试加载扩展时
  • 从通知中心启动应用程序时发生奇怪的崩溃(weird crash when launching app from Notification Center)
    问题 我不知所措,我遇到了一个奇怪的崩溃,该崩溃仅在从通知中心启动该应用程序时发生。 点击本地通知(在通知侧)或调用extensionContext:openURL:completionHandler(从“今日”小部件中)都将使用customURL方案启动应用程序。 当应用程序运行(热启动)时,没有任何问题,其工作方式与广告中所宣传的一样。 当我杀死该应用程序(在任务切换器中),然后尝试通过通知中心(冷启动)启动该应用程序时,得到以下崩溃报告。 我在低空搜寻任何东西,找不到它。 这仅在iOS8设备上发生,iOS7设备没有问题(随着通知启动,显然今天没有窗口小部件) 有人看过吗? 谢谢! Date/Time: 2014-10-14 18:16:39.924 -0400 Launch Time: 2014-10-14 18:16:38.667 -0400 OS Version: iOS 8.0.2 (12A405) Report Version: 105 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016a4cbeb8 Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple
  • iOS崩溃日志捕获,调试信息。捕获并通过电子邮件发送给开发团队(iOS crash log catch, debug info.. Catch and send via email to the Dev team)
    问题 最近,我们遇到了一种情况,我们想查看用户在其设备上拥有的应用程序中的调试信息。 因此,我正在寻找一种在设备上查找日志,将其作为内联文本粘贴到邮件上并允许用户发送的方法。 有任何想法吗? 还是这些问题。.1)在设备上找到调试日志2)打开文件,并将文件内容作为内联文本附加到邮件中。 3)允许用户在下次应用启动时通过电子邮件发送。 谢谢, 回答1 感谢大家的投入。.我将您的解决方案组合成一个可以解决我的问题的方法。.这就是我要做的。.当然,我没有编译代码,这是半熟的代码..但我会一旦在代码中实现它,便立即对其进行熨烫。 NSLog进入文件如何NSLog进入文件LOG2FILE #if TARGET_IPHONE_SIMULATOR == 0 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"]; freopen([logPath
  • 当服务器出现故障/崩溃时,Node JS 会自动重启所有 JS 进程(Node JS auto restart all forever JS process when server goes down / crashes)
    问题 我一直在使用 js 来保持我的节点服务器在 AWS EC2 上 24/7 全天候运行。 我用这个命令 forever start index.js 但是,我注意到有一段时间它会随机停止该过程并且我的网站出现故障。 我必须手动 ssh 进入我的服务器才能通过执行以下操作再次运行它: forever restartall 然后它去备份。 有什么方法可以定义超时,假设服务器/网站在 5 秒内没有响应 200,然后自动重新启动所有永久进程? 我对此很陌生,如果有人可以为我的案例提供一步一步的示例,那就太棒了。 回答1 (NodeJS) 服务器不应无故停止。 大多数时候,这是因为 500 错误没有被catch并停止服务器,然后您将不得不重新启动它。 默认情况下, forever使用node来启动您的服务器。 nodemon是一个 npm 包,可在代码更改或服务器停止时重新启动服务器。 您可以通过执行以下操作将forever和nodemon一起使用: forever start nodemon --exitcrash app.js 或者 forever start -c nodemon app.js 或者,正如其他答案中所建议的,您可以使用 PM2,这对生产会更好! 回答2 我建议使用 PM2 这是在生产服务器上运行的最佳选择。 以这种方式运行您的应用程序有什么优势? 它很容易设置和运行
  • Meteor 应用程序在启动时崩溃(Meteor app crashing on startup)
    问题 今天早上开发时莫名其妙地开始崩溃。 现在运行任何流星命令都会返回: module.js:340 throw err; ^ Error: Cannot find module 'combined-stream' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (/usr/local/meteor/lib/node_modules/request/node_modules/form-data/lib/form_data.js:1:84) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) 原始崩溃日志是:
  • 为什么需要重新启动才能在 iOS 上发送崩溃日志?(Why is restart needed to send crash log on iOS?)
    问题 使用自定义崩溃报告系统(例如专门在 iPhone 崩溃后要求用户发送崩溃日志的系统)来发送日志,应用程序需要重新启动。 为什么? 在自定义异常处理期间是否可以发送它? 或者是否有不需要重新启动应用程序的崩溃报告系统? 回答1 当发生崩溃时,应用程序处于高度不稳定的状态。 所以崩溃报告库不能做任何事情,因为即使在崩溃时分配内存也可能造成更大的损害。 所以崩溃报告 SDK 只能使用所谓的异步安全 C 方法来收集所有崩溃数据。 也无法处理任何 Objective-C 代码,也无法使用 iOS 网络堆栈。 另请注意,异常只是 Objective-C 中应用程序崩溃的一个例子,也有由低级 BSD 信号触发的崩溃。 这两种类型都意味着应用程序处于高度不安全和不稳定的状态,应在崩溃时调用尽可能少的代码。 因此,这将需要重写大多数网络框架才能在崩溃时将数据发送出去,而这甚至可能无法以安全的方式进行。 这就是为什么所有正确的崩溃报告 SDK 都不会做类似的事情的原因。 此外,在 iOS 上无法创建另一个可以在后台发送数据的进程,因此唯一安全可行的解决方案是在应用程序下次启动时发送数据。 现在有了另一个结论,即应用程序启动早期发生的崩溃可能永远不会被发送,因为应用程序在发送之前或发送时崩溃了。 一些 SDK 提供了处理最有可能需要更改应用程序启动代码的场景的机制。 回答2 由于您的应用程序崩溃了
  • 在iOS 4.0上使用大图像时应用崩溃(App Crashing when using large images on iOS 4.0)
    问题 我一直无法在scrollview上显示大图像,图像为2,4-4,7 MB。 它可以在3GS和模拟器上正常运行。 但是,每当我尝试在3G或iPod Touch 2G上运行时,它就会崩溃。 我在网上搜索后发现“ imageNamed is evil”一文。 好的,我将所有图像调用都更改为imageWithContentsOfFile:,但仍然崩溃,我看到的唯一不同是,在我离开视图之后,现在就重新分配了图像。 但是内存使用率仍然很高。 这是乐器的屏幕截图。 第一个高峰是我在启动时显示的视频,然后表格视图显示了很多图像,直到出现问题为止。 当我输入1,1mb-2576 x 1000图片时 当我输入4,8mb-7822 x 1000图片时 顺便说一下,该应用已在iOS 4和3.1.2上进行了测试 你有什么建议吗? 因为这个问题使我发疯。 从现在开始,非常感谢! 回答1 我最近在3G上测试应用程序时遇到了同样的问题。 我最终缩小了所有大于最大像素数的图像(我发现200万像素似乎可以在我的3G上可靠地工作,但是hotpaw2的回答似乎表明100万像素可能是更安全的选择)。 UIImage *image = // ...; if (image.size.width * image.size.height > MAX_PIXELS) { // calculate the scaling
  • 更新后无法打开iOS应用(iOS app cannot be opened after update)
    问题 我们有一个应用程序在应用程序商店上线了将近一年,我们收到了一些客户的差评,更新后无法打开应用程序。 用户报告他们无法在删除并随后重新安装应用程序后启动应用程序。 一位用户确实表示,他们只能在将 iPhone 恢复出厂设置后才能启动该应用程序。 我们认为该问题与钥匙串有关,因为这似乎在系统中一直存在。 因此,我们将用于访问钥匙串的第三方库更新为 https://github.com/soffes/sskeychain。 此更改是在 1.4.1 版中进行的。 在发布 1.4.1 后,一些用户表示他们终于能够打开该应用程序。 不幸的是,由于我们无法调试问题,我们无法确定可能已解决的问题。 此外,我们看到其他用户在升级到 1.4.1 和 1.4.2 时仍然遇到相同的问题。 我们也在考虑这个问题可能与我们的一个依赖库有关: 乱舞分析脸书 iOS SDK 贝宝 MPL Hockeyapp ios 库 ASIHTTP请求我们不使用 CoreData 我们无法使用标准的 iOS 工具对此进行调试,我们甚至不能指望曲棍球应用程序向我们提供崩溃报告,因为该应用程序在发送之前已关闭。 我们不理解这种行为,而且我们显然无法控制从应用程序商店更新的应用程序。 应用程序删除后是否有任何内容存在? 如果没有,您是否知道任何可能阻止重新安装的应用程序打开的情况? 编辑:我们正在以这种方式在
  • iOS应用程式每隔一次启动便当机,找不到错误(iOS app crashing every other launch, can't find error)
    问题 第一次启动该应用程序时,一切似乎运行良好。 我将按一下“停止”按钮,做一些工作,当我再次启动它时,它似乎崩溃了,甚至无法加载任何东西。 按停止,再次单击运行,它可以正常工作。 直到我重复该过程。 这是xcode使用“线程1:信号SIGABRT”突出显示错误的地方。 显然,这里没有任何用处。 int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class])); } } 调试控制台除了(lldb)之外什么都没有显示(因此,我想它停止了,目前还没有崩溃)。因此,当我执行BT这就是我得到的: (lldb) bt * thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101